carray 1.3.7 → 1.5.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (295) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +32 -0
  3. data/LICENSE +22 -0
  4. data/NEWS.md +78 -0
  5. data/README.md +43 -30
  6. data/Rakefile +31 -0
  7. data/TODO.md +17 -0
  8. data/carray.gemspec +21 -31
  9. data/{ca_iter_block.c → ext/ca_iter_block.c} +16 -18
  10. data/{ca_iter_dimension.c → ext/ca_iter_dimension.c} +20 -21
  11. data/{ca_iter_window.c → ext/ca_iter_window.c} +12 -14
  12. data/{ca_obj_array.c → ext/ca_obj_array.c} +451 -176
  13. data/{ca_obj_bitarray.c → ext/ca_obj_bitarray.c} +18 -23
  14. data/{ca_obj_bitfield.c → ext/ca_obj_bitfield.c} +12 -16
  15. data/{ca_obj_block.c → ext/ca_obj_block.c} +47 -54
  16. data/{ca_obj_fake.c → ext/ca_obj_fake.c} +10 -12
  17. data/{ca_obj_farray.c → ext/ca_obj_farray.c} +21 -23
  18. data/{ca_obj_field.c → ext/ca_obj_field.c} +30 -32
  19. data/{ca_obj_grid.c → ext/ca_obj_grid.c} +32 -33
  20. data/{ca_obj_mapping.c → ext/ca_obj_mapping.c} +11 -13
  21. data/{ca_obj_object.c → ext/ca_obj_object.c} +40 -42
  22. data/{ca_obj_reduce.c → ext/ca_obj_reduce.c} +3 -5
  23. data/{ca_obj_refer.c → ext/ca_obj_refer.c} +44 -48
  24. data/{ca_obj_repeat.c → ext/ca_obj_repeat.c} +45 -47
  25. data/{ca_obj_select.c → ext/ca_obj_select.c} +4 -6
  26. data/{ca_obj_shift.c → ext/ca_obj_shift.c} +26 -28
  27. data/{ca_obj_transpose.c → ext/ca_obj_transpose.c} +26 -28
  28. data/{ca_obj_unbound_repeat.c → ext/ca_obj_unbound_repeat.c} +106 -160
  29. data/{ca_obj_window.c → ext/ca_obj_window.c} +33 -35
  30. data/{carray.h → ext/carray.h} +90 -59
  31. data/{carray_access.c → ext/carray_access.c} +244 -109
  32. data/{carray_attribute.c → ext/carray_attribute.c} +161 -207
  33. data/{carray_call_cfunc.c → ext/carray_call_cfunc.c} +1 -3
  34. data/{carray_cast.c → ext/carray_cast.c} +350 -149
  35. data/{carray_cast_func.rb → ext/carray_cast_func.rb} +1 -2
  36. data/{carray_class.c → ext/carray_class.c} +28 -36
  37. data/{carray_conversion.c → ext/carray_conversion.c} +65 -70
  38. data/{carray_copy.c → ext/carray_copy.c} +34 -50
  39. data/{carray_core.c → ext/carray_core.c} +75 -62
  40. data/ext/carray_data_type.c +66 -0
  41. data/{carray_element.c → ext/carray_element.c} +34 -53
  42. data/{carray_generate.c → ext/carray_generate.c} +137 -50
  43. data/{carray_iterator.c → ext/carray_iterator.c} +53 -53
  44. data/{carray_loop.c → ext/carray_loop.c} +77 -106
  45. data/{carray_mask.c → ext/carray_mask.c} +105 -114
  46. data/{carray_math.rb → ext/carray_math.rb} +47 -31
  47. data/ext/{mathfunc/carray_mathfunc.c → carray_mathfunc.c} +1 -3
  48. data/{carray_numeric.c → ext/carray_numeric.c} +43 -46
  49. data/{carray_operator.c → ext/carray_operator.c} +72 -36
  50. data/{carray_order.c → ext/carray_order.c} +232 -217
  51. data/{carray_sort_addr.c → ext/carray_sort_addr.c} +14 -21
  52. data/{carray_stat.c → ext/carray_stat.c} +6 -8
  53. data/{carray_stat_proc.rb → ext/carray_stat_proc.rb} +25 -27
  54. data/{carray_test.c → ext/carray_test.c} +59 -51
  55. data/{carray_undef.c → ext/carray_undef.c} +1 -11
  56. data/{carray_utils.c → ext/carray_utils.c} +12 -4
  57. data/{extconf.rb → ext/extconf.rb} +6 -7
  58. data/{mkmath.rb → ext/mkmath.rb} +14 -4
  59. data/{ruby_carray.c → ext/ruby_carray.c} +20 -8
  60. data/{ruby_ccomplex.c → ext/ruby_ccomplex.c} +2 -4
  61. data/{ruby_float_func.c → ext/ruby_float_func.c} +1 -3
  62. data/ext/version.h +16 -0
  63. data/{version.rb → ext/version.rb} +0 -0
  64. data/lib/carray.rb +52 -10
  65. data/lib/carray/{base/autoload.rb → autoload.rb} +48 -8
  66. data/lib/carray/autoload/autoload_base.rb +1 -5
  67. data/lib/carray/autoload/autoload_gem_cairo.rb +9 -0
  68. data/lib/carray/autoload/autoload_gem_ffi.rb +9 -0
  69. data/lib/carray/autoload/autoload_gem_gnuplot.rb +2 -0
  70. data/lib/carray/autoload/autoload_gem_io_csv.rb +14 -0
  71. data/lib/carray/autoload/autoload_gem_io_pg.rb +6 -0
  72. data/lib/carray/autoload/autoload_gem_io_sqlite3.rb +12 -0
  73. data/lib/carray/autoload/autoload_gem_narray.rb +10 -0
  74. data/lib/carray/autoload/autoload_gem_numo_narray.rb +15 -0
  75. data/lib/carray/autoload/autoload_gem_opencv.rb +16 -0
  76. data/lib/carray/autoload/autoload_gem_random.rb +8 -0
  77. data/lib/carray/autoload/autoload_gem_rmagick.rb +23 -0
  78. data/lib/carray/autoload/{autoload_graphics_zimg.rb → autoload_gem_zimg.rb} +0 -0
  79. data/lib/carray/basic.rb +191 -0
  80. data/lib/carray/broadcast.rb +101 -0
  81. data/lib/carray/compose.rb +315 -0
  82. data/lib/carray/construct.rb +484 -0
  83. data/lib/carray/convert.rb +115 -0
  84. data/lib/carray/info.rb +1 -3
  85. data/lib/carray/{base/inspect.rb → inspect.rb} +9 -11
  86. data/lib/carray/io/imagemagick.rb +2 -4
  87. data/lib/carray/{base/iterator.rb → iterator.rb} +6 -6
  88. data/lib/carray/mask.rb +102 -0
  89. data/lib/carray/{base/math.rb → math.rb} +21 -53
  90. data/lib/carray/math/histogram.rb +8 -10
  91. data/lib/carray/math/recurrence.rb +1 -3
  92. data/lib/carray/mkmf.rb +9 -3
  93. data/lib/carray/object/ca_obj_iterator.rb +1 -3
  94. data/lib/carray/object/ca_obj_link.rb +1 -3
  95. data/lib/carray/object/ca_obj_pack.rb +9 -11
  96. data/lib/carray/obsolete.rb +256 -0
  97. data/lib/carray/ordering.rb +181 -0
  98. data/lib/carray/{base/serialize.rb → serialize.rb} +50 -66
  99. data/lib/carray/string.rb +188 -0
  100. data/lib/carray/{base/struct.rb → struct.rb} +19 -21
  101. data/lib/carray/{io/table.rb → table.rb} +1 -10
  102. data/lib/carray/testing.rb +51 -0
  103. data/lib/carray/time.rb +76 -0
  104. data/lib/carray/transform.rb +109 -0
  105. data/misc/Methods.ja.md +182 -0
  106. data/{NOTE → misc/NOTE} +16 -38
  107. data/spec/Classes/CABitfield_spec.rb +58 -0
  108. data/spec/Classes/CABlockIterator_spec.rb +114 -0
  109. data/spec/Classes/CABlock_spec.rb +205 -0
  110. data/spec/Classes/CAField_spec.rb +39 -0
  111. data/spec/Classes/CAGrid_spec.rb +75 -0
  112. data/spec/Classes/CAMap_spec.rb +0 -0
  113. data/{test/test_CAMapping.rb → spec/Classes/CAMapping_spec.rb} +35 -36
  114. data/spec/Classes/CAObject_attribute_spec.rb +33 -0
  115. data/spec/Classes/CAObject_spec.rb +33 -0
  116. data/spec/Classes/CARefer_spec.rb +93 -0
  117. data/spec/Classes/CARepeat_spec.rb +65 -0
  118. data/spec/Classes/CASelect_spec.rb +22 -0
  119. data/spec/Classes/CAShift_spec.rb +16 -0
  120. data/spec/Classes/CAStruct_spec.rb +71 -0
  121. data/{test/test_CATranspose.rb → spec/Classes/CATranspose_spec.rb} +20 -21
  122. data/spec/Classes/CAUnboudRepeat_spec.rb +102 -0
  123. data/spec/Classes/CAWindow_spec.rb +54 -0
  124. data/spec/Classes/CAWrap_spec.rb +8 -0
  125. data/{test/test_CArray.rb → spec/Classes/CArray_spec.rb} +48 -92
  126. data/spec/Classes/CScalar_spec.rb +55 -0
  127. data/spec/Features/feature_130_spec.rb +19 -0
  128. data/spec/Features/feature_attributes_spec.rb +280 -0
  129. data/spec/Features/feature_boolean_spec.rb +98 -0
  130. data/spec/Features/feature_broadcast.rb +116 -0
  131. data/spec/Features/feature_cast_function.rb +19 -0
  132. data/spec/Features/feature_cast_spec.rb +33 -0
  133. data/spec/Features/feature_class_spec.rb +84 -0
  134. data/spec/Features/feature_complex_spec.rb +42 -0
  135. data/{test/test_composite.rb → spec/Features/feature_composite_spec.rb} +17 -18
  136. data/spec/Features/feature_convert_spec.rb +46 -0
  137. data/spec/Features/feature_copy_spec.rb +123 -0
  138. data/spec/Features/feature_creation_spec.rb +84 -0
  139. data/spec/Features/feature_element_spec.rb +144 -0
  140. data/spec/Features/feature_extream_spec.rb +54 -0
  141. data/spec/Features/feature_generate_spec.rb +74 -0
  142. data/spec/Features/feature_index_spec.rb +69 -0
  143. data/spec/Features/feature_mask_spec.rb +580 -0
  144. data/spec/Features/feature_math_spec.rb +97 -0
  145. data/spec/Features/feature_order_spec.rb +146 -0
  146. data/spec/Features/feature_ref_store_spec.rb +209 -0
  147. data/spec/Features/feature_serialization_spec.rb +125 -0
  148. data/spec/Features/feature_stat_spec.rb +397 -0
  149. data/spec/Features/feature_virtual_spec.rb +48 -0
  150. data/spec/Features/method_eq_spec.rb +81 -0
  151. data/spec/Features/method_is_nan_spec.rb +12 -0
  152. data/spec/Features/method_map_spec.rb +54 -0
  153. data/spec/Features/method_max_with.rb +20 -0
  154. data/spec/Features/method_min_with.rb +19 -0
  155. data/spec/Features/method_ne_spec.rb +18 -0
  156. data/spec/Features/method_project_spec.rb +188 -0
  157. data/spec/Features/method_ref_spec.rb +27 -0
  158. data/spec/Features/method_round_spec.rb +11 -0
  159. data/spec/Features/method_s_linspace_spec.rb +48 -0
  160. data/spec/Features/method_s_span_spec.rb +14 -0
  161. data/spec/Features/method_seq_spec.rb +47 -0
  162. data/spec/Features/method_sort_with.rb +43 -0
  163. data/spec/Features/method_sorted_with.rb +29 -0
  164. data/spec/Features/method_span_spec.rb +42 -0
  165. data/spec/Features/method_wrap_readonly_spec.rb +43 -0
  166. data/{test → spec/UnitTest}/test_CAVirtual.rb +0 -0
  167. data/spec/spec_all.rb +0 -1
  168. data/utils/convert_test.rb +73 -0
  169. data/utils/{extract_rdoc.rb → extract_yard.rb} +7 -12
  170. data/{devel → utils}/guess_shape.rb +0 -0
  171. data/utils/{diff_method.rb → monkey_patch_methods.rb} +17 -7
  172. metadata +171 -298
  173. data/COPYING +0 -56
  174. data/GPL +0 -340
  175. data/Gemfile +0 -8
  176. data/Gemfile.lock +0 -33
  177. data/LEGAL +0 -50
  178. data/TODO +0 -5
  179. data/carray_random.c +0 -531
  180. data/ext/calculus/carray_calculus.c +0 -931
  181. data/ext/calculus/carray_interp.c +0 -358
  182. data/ext/calculus/extconf.rb +0 -12
  183. data/ext/calculus/lib/autoload/autoload_math_calculus.rb +0 -2
  184. data/ext/calculus/lib/math/calculus.rb +0 -119
  185. data/ext/calculus/lib/math/interp/adapter_interp1d.rb +0 -31
  186. data/ext/fortio/extconf.rb +0 -3
  187. data/ext/fortio/lib/carray/autoload/autoload_fortran_format.rb +0 -5
  188. data/ext/fortio/lib/carray/io/fortran_format.rb +0 -43
  189. data/ext/fortio/lib/fortio.rb +0 -3
  190. data/ext/fortio/lib/fortio/fortran_format.rb +0 -605
  191. data/ext/fortio/lib/fortio/fortran_format.tab.rb +0 -536
  192. data/ext/fortio/lib/fortio/fortran_format.y +0 -215
  193. data/ext/fortio/lib/fortio/fortran_namelist.rb +0 -151
  194. data/ext/fortio/lib/fortio/fortran_namelist.tab.rb +0 -470
  195. data/ext/fortio/lib/fortio/fortran_namelist.y +0 -213
  196. data/ext/fortio/lib/fortio/fortran_sequential.rb +0 -345
  197. data/ext/fortio/ruby_fortio.c +0 -182
  198. data/ext/fortio/test/test_H.rb +0 -5
  199. data/ext/fortio/test/test_T.rb +0 -7
  200. data/ext/fortio/test/test_fortran_format.rb +0 -86
  201. data/ext/fortio/test/test_namelist.rb +0 -25
  202. data/ext/fortio/test/test_namelist_write.rb +0 -10
  203. data/ext/fortio/test/test_sequential.rb +0 -13
  204. data/ext/fortio/test/test_sequential2.rb +0 -13
  205. data/ext/fortio/work/test.rb +0 -10
  206. data/ext/fortio/work/test_e.rb +0 -19
  207. data/ext/fortio/work/test_ep.rb +0 -10
  208. data/ext/fortio/work/test_parse.rb +0 -12
  209. data/ext/mathfunc/extconf.rb +0 -18
  210. data/ext/mathfunc/lib/autoload/autoload_math_mathfunc.rb +0 -1
  211. data/ext/mathfunc/lib/math/mathfunc.rb +0 -15
  212. data/ext/mathfunc/test/test_hypot.rb +0 -5
  213. data/ext/mathfunc/test/test_j0.rb +0 -22
  214. data/ext/mathfunc/test/test_jn.rb +0 -8
  215. data/ext/mathfunc/test/test_sph.rb +0 -9
  216. data/ext/narray/README +0 -22
  217. data/ext/narray/ca_wrap_narray.c +0 -500
  218. data/ext/narray/carray_narray.c +0 -21
  219. data/ext/narray/extconf.rb +0 -57
  220. data/ext/narray/lib/autoload/autoload_math_narray.rb +0 -1
  221. data/ext/narray/lib/autoload/autoload_math_narray_miss.rb +0 -11
  222. data/ext/narray/lib/math/narray.rb +0 -17
  223. data/ext/narray/lib/math/narray_miss.rb +0 -45
  224. data/lib/carray/autoload/autoload_graphics_gnuplot.rb +0 -2
  225. data/lib/carray/autoload/autoload_io_csv.rb +0 -14
  226. data/lib/carray/autoload/autoload_io_numo.rb +0 -9
  227. data/lib/carray/autoload/autoload_io_pg.rb +0 -6
  228. data/lib/carray/autoload/autoload_io_sqlite3.rb +0 -12
  229. data/lib/carray/autoload/autoload_io_table.rb +0 -1
  230. data/lib/carray/autoload/autoload_math_interp.rb +0 -4
  231. data/lib/carray/base/basic.rb +0 -1090
  232. data/lib/carray/base/obsolete.rb +0 -131
  233. data/lib/carray/graphics/gnuplot.rb +0 -2141
  234. data/lib/carray/graphics/zimg.rb +0 -296
  235. data/lib/carray/io/csv.rb +0 -572
  236. data/lib/carray/io/numo.rb +0 -52
  237. data/lib/carray/io/pg.rb +0 -101
  238. data/lib/carray/io/sqlite3.rb +0 -215
  239. data/lib/carray/math/interp.rb +0 -57
  240. data/lib/carray/math/interp/adapter_gsl_spline.rb +0 -47
  241. data/mt19937ar.c +0 -182
  242. data/mt19937ar.h +0 -86
  243. data/rdoc_main.rb +0 -27
  244. data/rdoc_math.rb +0 -5
  245. data/rdoc_stat.rb +0 -31
  246. data/spec/CABlockIterator/CABlockIterator_spec.rb +0 -113
  247. data/spec/CArray/bug/store_spec.rb +0 -27
  248. data/spec/CArray/index/repeat_spec.rb +0 -10
  249. data/spec/CArray/method/eq_spec.rb +0 -80
  250. data/spec/CArray/method/is_nan_spec.rb +0 -12
  251. data/spec/CArray/method/ne_spec.rb +0 -18
  252. data/spec/CArray/method/round_spec.rb +0 -11
  253. data/spec/CArray/object/_attribute_spec.rb +0 -32
  254. data/spec/CArray/object/s_new_spec.rb +0 -31
  255. data/spec/CArray/serialize/Serialization_spec.rb +0 -89
  256. data/test/test_130.rb +0 -23
  257. data/test/test_ALL.rb +0 -51
  258. data/test/test_CABitfield.rb +0 -59
  259. data/test/test_CABlock.rb +0 -208
  260. data/test/test_CAField.rb +0 -40
  261. data/test/test_CAGrid.rb +0 -76
  262. data/test/test_CAMmap.rb +0 -11
  263. data/test/test_CARefer.rb +0 -94
  264. data/test/test_CARepeat.rb +0 -66
  265. data/test/test_CASelect.rb +0 -23
  266. data/test/test_CAShift.rb +0 -17
  267. data/test/test_CAWindow.rb +0 -55
  268. data/test/test_CAWrap.rb +0 -9
  269. data/test/test_CComplex.rb +0 -83
  270. data/test/test_CScalar.rb +0 -91
  271. data/test/test_attribute.rb +0 -281
  272. data/test/test_block_iterator.rb +0 -17
  273. data/test/test_boolean.rb +0 -99
  274. data/test/test_cast.rb +0 -33
  275. data/test/test_class.rb +0 -85
  276. data/test/test_complex.rb +0 -43
  277. data/test/test_convert.rb +0 -79
  278. data/test/test_copy.rb +0 -141
  279. data/test/test_creation.rb +0 -85
  280. data/test/test_element.rb +0 -146
  281. data/test/test_extream.rb +0 -55
  282. data/test/test_generate.rb +0 -75
  283. data/test/test_index.rb +0 -71
  284. data/test/test_mask.rb +0 -578
  285. data/test/test_math.rb +0 -98
  286. data/test/test_narray.rb +0 -64
  287. data/test/test_order.rb +0 -147
  288. data/test/test_random.rb +0 -15
  289. data/test/test_ref_store.rb +0 -211
  290. data/test/test_stat.rb +0 -414
  291. data/test/test_struct.rb +0 -72
  292. data/test/test_virtual.rb +0 -49
  293. data/utils/create_rdoc.sh +0 -9
  294. data/utils/make_tgz.sh +0 -3
  295. data/version.h +0 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aaacae774d68469b95b0634955463ff6edd4ca5ee2b72d9c9b3d9fe06bae2c84
4
- data.tar.gz: 9e482c11e5d60f5b2f5393436b220d7e6af9d30a117768eaabb9bc02e2ebecea
3
+ metadata.gz: 0bcafe56b32f0ad6542bab2d0236d82a8b4bf0a30fa94bd595dfad9bde4c4c55
4
+ data.tar.gz: dbf49a82458355e015b61055dfdede6ef68540baa95677834f65ad39b689acbc
5
5
  SHA512:
6
- metadata.gz: e8f883c826b68d1932bfded4a567d92dff76ad57efd4be8284d73bbe1bb0e47795aad407e9bd7b4e633127e677fff77b5fbf939b2973ad6af6513bddffc2adc7
7
- data.tar.gz: 4bba385987fa5257cdc9f5e46ffcb2018144edbfc1b64a57fb6fef60c67767b59e38dac07d2869140a901291791f023e3bb22b447cde2f3a1162e3ab1082d77b
6
+ metadata.gz: 36328e14797d232525715cfd635a64e5526cc667168498cb603248b8210de92ab0ad7dbc4ee07c4b586dda1ed2b34e55cdc52d0ca0da7f9dc5984e9600ee8cbc
7
+ data.tar.gz: 10a03a1938771eda7f821052bac82ecae05496c4ef463530e2160421547b0364cccec09e11bc86f029dcd6ad9233aa13cdae4e322b22513b39263333f1d68804
@@ -0,0 +1,32 @@
1
+ --markup markdown
2
+ --markup-provider redcarpet
3
+ --no-private
4
+ --exclude lib/carray/obsolete.rb
5
+ --exclude lib/carray/autoload.rb
6
+ --exclude 'lib/carray/autoload/'
7
+ --readme README.md
8
+ --files NEWS.md,TODO.md
9
+ lib/carray.rb
10
+ ext/ruby_carray.c
11
+ ext/ca_obj_array.c
12
+ ext/ca_obj_bitarray.c
13
+ ext/ca_obj_bitfield.c
14
+ ext/ca_obj_block.c
15
+ ext/carray_attribute.c
16
+ ext/carray_call_cfunc.c
17
+ ext/carray_cast.c
18
+ ext/carray_class.c
19
+ ext/carray_conversion.c
20
+ ext/carray_copy.c
21
+ ext/carray_core.c
22
+ ext/carray_data_type.c
23
+ ext/carray_element.c
24
+ ext/carray_generate.c
25
+ ext/carray_loop.c
26
+ ext/carray_mask.c
27
+ ext/carray_operator.c
28
+ ext/carray_order.c
29
+ ext/carray_sort_addr.c
30
+ ext/carray_test.c
31
+ ext/carray_utils.c
32
+
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2020 Hiroki Motoyoshi.
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
data/NEWS.md ADDED
@@ -0,0 +1,78 @@
1
+ ChangeLog of Ruby/CArray
2
+ ========================
3
+
4
+ 1.5.3 -> 1.5.4
5
+ --------------
6
+
7
+ * [New] Import method 'CArray#section' from gem 'carray-calculus'
8
+ * [New] Add new method 'CArray#pull', 'CArray#pulled'
9
+ * [New] Add new option 'expand_scalar' to 'CArray.broadcast'
10
+ * [Mod] Modify the method 'CArray.broadcast' to accept block.
11
+ * [Mod] Modify the method 'CArray.meshgrid' to accept block.
12
+ * [Mod] Modify 'CScalar#broadcast_to' to return CArray
13
+ * [Mod] Modify 'CScalar#is_masked' and 'CScalar#is_masked' to return CScalar
14
+ * [Fix] Fix order of repetitive dimensions in 'CArray#meshgrid'
15
+ * [Fix] Fix errors in installing on MinGW+msys2
16
+
17
+ 1.5.2 -> 1.5.3
18
+ --------------
19
+
20
+ * [New] Add new method 'CArray#exp2'
21
+ * [New] Add new method 'CArray#log2'
22
+ * [New] Add new method 'CArray#logb'
23
+ * [New] Add new method 'CArray#remainder'
24
+ * [New] Add new method 'CArray.guard_undef'
25
+ * [New] Add new method 'CArray#data_class='
26
+ * [New] Add new method 'CArray.data_class?'
27
+ * [Mod] Modify 'CArray#pmax' to use 'fmax' for float type
28
+ * [Mod] Modify 'CArray#pmin' to use 'fmin' for float type
29
+ * [Mod] Remove method 'Object#undef?'
30
+ * [Mod] Remove method '::nan', '::inf'
31
+ * [Mod] Remove method 'TrueClass#*', 'FalseClass#*' (unknown origin)
32
+ * [Fix] Fix invalid access for CAUnboundRepeat using index
33
+ * [Fix] Fix treatment of extra :* in operation between CAUnboundRepeat objects
34
+ * [Fix] Fix to accept Symbol for the name of data_class member
35
+ * [Fix] Fix 'CArray#uniq' to accept the array with the dimension more than 2.
36
+ * [Fix] Fix for CArray serialization to include data_class
37
+ * [Fix] Fix data_class inheritance in some methods in which new CArray is created.
38
+ * [Fix] Fix 'CArray#broadcast_to' to accept the case of dimension extension.
39
+
40
+ 1.5.1 -> 1.5.2
41
+ --------------
42
+
43
+ * [New] Add new method 'CArray#sorted_with'
44
+ * [New] Add new method 'CArray#sort_with'
45
+ * [New] Add new method 'CArray#max_with'
46
+ * [New] Add new method 'CArray#min_with'
47
+ * [New] Add new method 'CArray.broadcast'
48
+ * [New] Add new method 'CArray#broadcast_to', 'CScalar#broadcast_to'
49
+ * [New] Add new API function `rb_ca_wrap_new`
50
+ * [Mod] Modify 'CArray#linspace' to return float64 array for integer arguments
51
+ * [Mod] Modify CAUnboundRepeat to have `ndim` same as the bounded array (before `ndim` same as parent array)
52
+ * [Mod] Remove the obsolete mothod 'CArray#dump'.
53
+ * [Mod] Remove the obsolete mothod 'CArray#load'.
54
+ * [Mod] Modify CArray.wrap_readonly to wrap string as array.
55
+ * [Fix] Add support for Integer (same as for Fixnum, Bignum)
56
+
57
+ 1.5.0 -> 1.5.1
58
+ --------------
59
+
60
+ * [New] Add data type classes like 'Float64' ... to provide the methods like 'CArray::Float64.linspace'
61
+ * [Mod] Modify 'CArray.float64' ... without aruguments to return the corresponding data type class
62
+ * [Mod] Set obsolete flag to 'CAIterator#sort_with'
63
+ * [Fix] Move C extension files into 'ext/'
64
+ * [Fix] Rename member 'rank' to 'ndim' in struct CArray in C extension
65
+ * [Fix] Remove 'CArray#shuffle' (gone to 'carray-random' gem)
66
+ * [Fix] Remove dependencies on 'rb_secure()' and 'rb_safe_level()'
67
+ * [Fix] Modify 'CArray#span' to handle fractional step for integer array
68
+
69
+ 1.4.0 -> 1.5.0
70
+ --------------
71
+
72
+ * [Mod] Remove 'Carray#random!' (gone to 'carray-random' gem)
73
+ * [Mod] Relocate file 'lib/carray/io/table.rb' to 'lib/carray/table.rb'
74
+ * [Mod] Rename class 'CA::TableMethods' to 'CArray::TableMethods'
75
+ * [Mod] Rename method 'CArray#cast_other' to 'CArray#cast_with'
76
+ * [Mod] Change license from "Ruby's" to "MIT"
77
+ * [Mod] Remove files 'COPYING', 'LEGAL'(for MT), 'GPL'
78
+ * [Fix] Fix bug lib/carray/struct.rb
data/README.md CHANGED
@@ -3,41 +3,54 @@ Ruby/CArray
3
3
 
4
4
  Ruby/CArray is an extension library for the multi-dimensional array class.
5
5
 
6
+ Features
7
+ --------
8
+
9
+ * Collection class for multidimensional array storing the value with uniform data type
10
+ * Element-wise mathematical operations and functions
11
+ * Statistical operation for the elements
12
+ * Various methods for referencing data elements
13
+ * Internally included element-wise mask to handle missing values
14
+ * Indirect data manipulation to referent by virtual array
15
+ * Special iterators (dimension, block, window, categorical)
16
+ * User-defined array class with same multi-dimensional interfaces as CArray
17
+ * Accessing the partial data in fixed length data via data_class interface
18
+ * Wrapping the memory block owned by the other object (such as NArray).
19
+
6
20
  Requirements
7
21
  ------------
8
22
 
9
- * Ruby 2.2.0 or later
23
+ * Ruby 2.4.0 or later
10
24
  * C compiler
11
25
  + IEEE754 floating point number
12
26
  + C99 complex number
13
- * Optionally required gems
14
- + narray
15
- + narray_miss
16
- + axlsx
17
- + spreadsheet
18
- + sqlite3
19
- * Optional command
20
- + Gnuplot
21
- + ImageMagick (stream, convert, display, identify)
22
-
23
- Directories
24
- -----------
25
-
26
- . - Ruby/CArray extension source codes
27
- lib - Ruby/CArray standard library in Ruby
28
- ext - optional extension libraries for Ruby/CArray
29
- examples - some examples
30
- test - some unit tests (incomplete)
31
- spec - some rspec (incomplete)
32
- utils - support tools for development.
33
-
34
- Author
35
- ------
36
-
37
- Hiroki Motoyoshi
38
-
39
- Copying
27
+
28
+ What is Ruby/CArray
29
+ ------------------
30
+
31
+ Ruby/CArray is an extension library for the multi-dimensional numerical array class. The name "CArray" comes from a wrapper's meaning to a numerical array handled by the C language. CArray stores integers or floating-point numbers in memory block and treats them collectively to ensure efficient performance. Therefore, Ruby/CArray is suitable for numerical computation and data analysis.
32
+
33
+ #### Multi-dimensional uniform array ####
34
+
35
+ CArray is a collection class that can store the array of values with a uniform data type of one of fixed-width integer (8,16,32,64bits), floating-point number (32,64bits), complex number (64,128bits), fixed-length string, ruby object. These values are stored in memory block as binary data. CArray has multi-dimensional interfaces for the array to access their values. The multi-dimensional array has the attributes of the dimension size (1,2,3,...) and the shape of dimension ([dim0], [dim0,dim1], [dim0,dim1,dim2],...) which define the size of array.
36
+
37
+ #### Collective mathematical operations ####
38
+
39
+ CArray supports the collective calculation for the element-wise arithmetic operations and elementary mathematical functions. Additionally, some basic statistical summarization along specific dimensions are also provided.
40
+
41
+ #### Referencing data and virtual arrays ####
42
+
43
+ CArray provides various methods for referencing data, such as addressing, slicing, selection by condition, address mapping, grid reference, transposing, shifting, rolling, data type conversion, reshaping, and so on. These data referencing are realized by the creation of virtual arrays, so-called 'view'. The virtual array doesn't have its data and retrieves the data from the referent only on-demand, including dereferencing, copying, or calculation. Since virtual array classes are sub-class of CArray, it has the same interfaces to access data as CArray. The changes in a virtual array by storing data are also reflected in the referent (if not a read_only array). Multiple heterogeneous chains of reference are also allowed, although the trade-offs with performance must be carefully considered.
44
+
45
+ #### Built-in element-wise mask handling ####
46
+
47
+ CArray possesses masked states about each element (so-called "element-wise mask"). By referring the element-wise mask, CArray can perform mathematical and statistical calculations on the data with missing values by appropriate handling of masked elements. , which include the propagation of mask state to result in element-wise arithmetics and ignoring the masked elements in a statistical calculation, and so on.
48
+
49
+ #### User-defined array ####
50
+
51
+ Users can define a new virtual array class in Ruby level or C-extension level with TemplateMethod pattern. They are defined as a subclass of CAObject in Ruby level and as a subclass of CAVirtual in C-extension level. In particular, at the Ruby level, you can easily define a CArray-like class by implementing just a few template methods.
52
+
53
+ License
40
54
  -------
41
55
 
42
- You can redistribute this library package and/or modify it under the terms of
43
- the Ruby Licence. See the file 'COPYING' in this directory.
56
+ MIT (after version 1.5.0)
data/Rakefile CHANGED
@@ -2,12 +2,43 @@
2
2
  #
3
3
  #
4
4
 
5
+ GEMSPEC = "carray.gemspec"
6
+
7
+ task :install do
8
+ spec = eval File.read(GEMSPEC)
9
+ version_h = `ruby ext/version.rb`.chomp
10
+ if spec.version.to_s != version_h
11
+ STDERR.puts "Mismatch in version between carray.gemspec and version.h"
12
+ STDERR.puts " carray.gemspec - #{spec.version.to_s }"
13
+ STDERR.puts " version.h - #{version_h}"
14
+ STDERR.puts "Please check!"
15
+ exit(1)
16
+ end
17
+ system %{
18
+ gem build #{GEMSPEC}; gem install #{spec.full_name}.gem --no-document
19
+ }
20
+ end
21
+
22
+ require 'rspec/core/rake_task'
23
+ RSpec::Core::RakeTask.new
24
+
25
+
26
+ __END__
5
27
  require 'rake'
6
28
  require 'rake/testtask'
7
29
  require 'rspec/core/rake_task'
8
30
 
9
31
  task :default => :test
10
32
 
33
+ GEMSPEC = "carray.gemspec"
34
+
35
+ task :install do
36
+ spec = eval File.read(GEMSPEC)
37
+ system %{
38
+ gem build #{GEMSPEC}; gem install #{spec.full_name}.gem
39
+ }
40
+ end
41
+
11
42
  desc "Run the tests"
12
43
  Rake::TestTask::new(:test) do |t|
13
44
  t.test_files = FileList['test/test_ALL.rb']
data/TODO.md ADDED
@@ -0,0 +1,17 @@
1
+ ToDo List
2
+ =========
3
+
4
+ ToDo
5
+ -------
6
+ * Implement CArray.broadcast in C
7
+ * Implement Integer#{|,&,^,<<,>>} with Refinement (remove monkey patch)
8
+ * Remove RSTRUCT hack in carray_access.c for handling of Range object.
9
+ * Solve abs probrems
10
+ * Create spec
11
+ - str_format (cyclic format)
12
+ - CA_SIZE
13
+ - serialization of carray which has data_class
14
+
15
+ Done
16
+ -------
17
+
@@ -1,44 +1,34 @@
1
-
2
-
3
1
  Gem::Specification::new do |s|
4
- require_relative "./version"
5
-
6
- version, date = carray_version()
7
2
 
8
- files = Dir.glob("**/*") - [
9
- Dir.glob("vendor"),
10
- Dir.glob("ext/**/{Makefile,mkmf.log}"),
11
- Dir.glob("**/*.{o,so,bundle}"),
12
- Dir.glob("**/*~"),
13
- Dir.glob("carray-*.gem"),
14
- ].flatten
3
+ version = "1.5.4"
4
+
5
+ files = Dir.glob("**/*") + [".yardopts"] -
6
+ [
7
+ Dir.glob("carray-*.gem"),
8
+ Dir.glob("ext/**/{Makefile,mkmf.log}"),
9
+ Dir.glob("**/*.{o,so,bundle}"),
10
+ Dir.glob("**/*~"),
11
+ Dir.glob("doc/**/*"),
12
+ Dir.glob("test/**/*"),
13
+ ].flatten
15
14
 
16
15
  s.platform = Gem::Platform::RUBY
17
16
  s.name = "carray"
18
- s.summary = "Multi-dimesional array class"
17
+ s.summary = "Multi-dimesional array class for Ruby"
19
18
  s.description = <<-HERE
20
- CArray is a uniform multi-dimensional rectangular array class.
21
- It provides the various types of sub-arrays and references
22
- pointing the data elements of original array (slice, grid, selection ...).
23
- Element-wise masking and mathematical operations are natively supported.
19
+ Ruby/CArray is an extension library for the multi-dimensional numerical array
20
+ class. The name "CArray" comes from the meaning of a wrapper to a numerical array
21
+ handled by the C language. CArray stores integers or floating-point numbers in
22
+ memory block and treats them collectively to ensure efficient performance.
23
+ Therefore, Ruby/CArray is suitable for numerical computation and data analysis.
24
24
  HERE
25
25
  s.version = version
26
26
  s.author = "Hiroki Motoyoshi"
27
27
  s.email = ""
28
+ s.license = 'MIT'
28
29
  s.homepage = 'https://github.com/himotoyoshi/carray'
29
30
  s.files = files
30
- s.extensions = [ "extconf.rb" ] +
31
- Dir["ext/*/extconf.rb"].select{|f| File.exist?(f) }
32
- s.rdoc_options = [
33
- "-m rdoc_main.rb",
34
- "rdoc_main.rb",
35
- "rdoc_ext.rb",
36
- "rdoc_math.rb",
37
- "rdoc_stat.rb",
38
- Dir.glob("lib/carray/**/*.rb"),
39
- ].flatten
40
- s.required_ruby_version = ">= 1.8.1"
41
- s.add_runtime_dependency 'narray', '~> 0.6.1.1'
42
- s.add_runtime_dependency 'narray_miss', '~> 1.3'
43
- s.add_runtime_dependency 'sqlite3', '~> 1.3'
31
+ s.extensions = [ "ext/extconf.rb" ]
32
+ s.required_ruby_version = ">= 2.4.0"
44
33
  end
34
+
@@ -3,16 +3,14 @@
3
3
  ca_iter_block.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
- /* rdoc:
13
+ /* yard:
16
14
  class CABlockIterator < CAIterator # :nodoc:
17
15
  end
18
16
  */
@@ -23,7 +21,7 @@ VALUE rb_cCABlockIterator;
23
21
  typedef struct {
24
22
  int16_t obj_type;
25
23
  int8_t data_type;
26
- int8_t rank;
24
+ int8_t ndim;
27
25
  int32_t flags;
28
26
  ca_size_t bytes;
29
27
  ca_size_t elements;
@@ -42,11 +40,11 @@ typedef struct {
42
40
  ca_size_t *step;
43
41
  ca_size_t *count;
44
42
  ca_size_t *size0;
45
- } CABlock; // 68 + 20*(rank) (bytes)
43
+ } CABlock; // 68 + 20*(ndim) (bytes)
46
44
  */
47
45
 
48
46
  typedef struct {
49
- int8_t rank;
47
+ int8_t ndim;
50
48
  ca_size_t dim[CA_RANK_MAX];
51
49
  CArray *reference;
52
50
  CArray * (*kernel_at_addr)(void *, ca_size_t, CArray *);
@@ -73,14 +71,14 @@ ca_bi_kernel_at_index (void *it, ca_size_t *idx, CArray *ref)
73
71
  else {
74
72
  CABlock *ck = (CABlock *)bit->kernel;
75
73
  kernel = ca_block_new(ref,
76
- ck->rank, ck->size0,
74
+ ck->ndim, ck->size0,
77
75
  ck->start, ck->step, ck->count,
78
76
  ck->offset);
79
77
  }
80
78
 
81
79
  ca_update_mask(kernel);
82
80
 
83
- for (i=0; i<kernel->rank; i++) {
81
+ for (i=0; i<kernel->ndim; i++) {
84
82
  j = idx[i];
85
83
  CA_CHECK_INDEX(j, bit->dim[i]);
86
84
  kernel->start[i] += j * kernel->dim[i];
@@ -99,7 +97,7 @@ ca_bi_kernel_at_addr (void *it, ca_size_t addr, CArray *ref)
99
97
  ca_size_t *dim = bit->dim;
100
98
  ca_size_t idx[CA_RANK_MAX];
101
99
  int8_t i;
102
- for (i=bit->rank-1; i>=0; i--) {
100
+ for (i=bit->ndim-1; i>=0; i--) {
103
101
  idx[i] = addr % dim[i];
104
102
  addr /= dim[i];
105
103
  }
@@ -117,7 +115,7 @@ ca_bi_kernel_move_to_index (void *it, ca_size_t *idx, CArray *kern)
117
115
 
118
116
  ca_update_mask(kernel);
119
117
 
120
- for (i=0; i<kernel->rank; i++) {
118
+ for (i=0; i<kernel->ndim; i++) {
121
119
  j = idx[i];
122
120
  CA_CHECK_INDEX(j, bit->dim[i]);
123
121
  kernel->start[i] = j * kernel->dim[i];
@@ -136,7 +134,7 @@ ca_bi_kernel_move_to_addr (void *it, ca_size_t addr, CArray *ref)
136
134
  ca_size_t *dim = bit->dim;
137
135
  ca_size_t idx[CA_RANK_MAX];
138
136
  int8_t i;
139
- for (i=bit->rank-1; i>=0; i--) {
137
+ for (i=bit->ndim-1; i>=0; i--) {
140
138
  idx[i] = addr % dim[i];
141
139
  addr /= dim[i];
142
140
  }
@@ -158,11 +156,11 @@ ca_bi_setup (VALUE self, VALUE rref, VALUE rker)
158
156
  Data_Get_Struct(rref, CArray, ref);
159
157
  Data_Get_Struct(rker, CABlock, ker);
160
158
 
161
- if ( ref->rank != ker->rank ) {
162
- rb_raise(rb_eRuntimeError, "rank mismatch between reference and kernel");
159
+ if ( ref->ndim != ker->ndim ) {
160
+ rb_raise(rb_eRuntimeError, "ndim mismatch between reference and kernel");
163
161
  }
164
162
 
165
- for (i=0; i<ref->rank; i++) {
163
+ for (i=0; i<ref->ndim; i++) {
166
164
  if ( ker->step[i] != 1 ) {
167
165
  rb_raise(rb_eRuntimeError, "block should be contiguous");
168
166
  }
@@ -174,8 +172,8 @@ ca_bi_setup (VALUE self, VALUE rref, VALUE rker)
174
172
  */
175
173
  }
176
174
 
177
- it->rank = ref->rank;
178
- memcpy(it->dim, dim, it->rank * sizeof(ca_size_t));
175
+ it->ndim = ref->ndim;
176
+ memcpy(it->dim, dim, it->ndim * sizeof(ca_size_t));
179
177
  it->reference = ref;
180
178
  it->kernel = ker;
181
179
  it->kernel_at_addr = ca_bi_kernel_at_addr;
@@ -202,7 +200,7 @@ rb_bi_initialize_copy (VALUE self, VALUE other)
202
200
  return self;
203
201
  }
204
202
 
205
- /* rdoc:
203
+ /* yard:
206
204
  class CArray
207
205
  # Create block iterator.
208
206
  def blocks (*args)