carray 3.0.2 → 3.0.3

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.
Files changed (218) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +304 -0
  3. data/README.md +3 -4
  4. data/carray.gemspec +1 -1
  5. data/ext/ca_axis_dispatch.c +225 -0
  6. data/ext/ca_axis_group.c +177 -99
  7. data/ext/ca_binop_dispatch.c +54 -32
  8. data/ext/ca_binop_dispatch.h +1 -0
  9. data/ext/ca_categorical_iterator.c +66 -71
  10. data/ext/ca_compare.c +8 -2
  11. data/ext/ca_for_buffer.h +21 -68
  12. data/ext/ca_group_iter.c +27 -11
  13. data/ext/ca_kernel_iterator.c +663 -214
  14. data/ext/ca_kernel_iterator.h +231 -167
  15. data/ext/ca_monop_dispatch.c +4 -4
  16. data/ext/ca_monop_dispatch.h +4 -0
  17. data/ext/ca_obj_array.c +132 -22
  18. data/ext/ca_obj_bincmp.c +152 -121
  19. data/ext/ca_obj_binop.c +107 -210
  20. data/ext/ca_obj_bitarray.c +37 -24
  21. data/ext/ca_obj_bitfield.c +95 -62
  22. data/ext/ca_obj_block.c +1 -0
  23. data/ext/ca_obj_byte_swap.c +40 -40
  24. data/ext/ca_obj_const_string.c +96 -25
  25. data/ext/ca_obj_face.c +406 -64
  26. data/ext/ca_obj_face.h +92 -47
  27. data/ext/ca_obj_fake.c +21 -50
  28. data/ext/ca_obj_farray.c +1 -0
  29. data/ext/ca_obj_field.c +16 -3
  30. data/ext/ca_obj_fixlen_string.c +21 -21
  31. data/ext/ca_obj_grid.c +181 -124
  32. data/ext/ca_obj_meld.c +189 -107
  33. data/ext/ca_obj_moncmp.c +61 -61
  34. data/ext/ca_obj_monop.c +125 -107
  35. data/ext/ca_obj_object.c +543 -233
  36. data/ext/ca_obj_record.c +51 -16
  37. data/ext/ca_obj_reduce.c +5 -8
  38. data/ext/ca_obj_refer.c +117 -33
  39. data/ext/ca_obj_remap.c +57 -17
  40. data/ext/ca_obj_repeat.c +21 -5
  41. data/ext/ca_obj_roll.c +115 -11
  42. data/ext/ca_obj_select.c +47 -49
  43. data/ext/ca_obj_select_axis.c +58 -60
  44. data/ext/ca_obj_shift.c +22 -102
  45. data/ext/ca_obj_stack.c +223 -118
  46. data/ext/ca_obj_stride.c +195 -34
  47. data/ext/ca_obj_string.c +17 -18
  48. data/ext/ca_obj_tile.c +32 -16
  49. data/ext/ca_obj_time.c +23 -25
  50. data/ext/ca_obj_timedelta.c +21 -23
  51. data/ext/ca_obj_transpose.c +12 -3
  52. data/ext/ca_obj_triop.c +110 -117
  53. data/ext/ca_obj_window.c +149 -27
  54. data/ext/ca_op_ipower.c +24 -11
  55. data/ext/ca_op_powi.h +57 -30
  56. data/ext/ca_pow5_table.h +656 -0
  57. data/ext/ca_sort_kernels.h +70 -0
  58. data/ext/ca_sweep_engine.c +102 -79
  59. data/ext/ca_sweep_engine.h +7 -20
  60. data/ext/ca_triop_dispatch.c +4 -1
  61. data/ext/ca_triop_dispatch.h +5 -2
  62. data/ext/caframe_csv_reader.c +463 -0
  63. data/ext/carray.h +70 -27
  64. data/ext/carray_access.c +455 -211
  65. data/ext/carray_address_basis.c +177 -36
  66. data/ext/carray_attribute.c +45 -3
  67. data/ext/carray_bincount.c +32 -2
  68. data/ext/carray_broadcast.c +46 -14
  69. data/ext/carray_call_cfunc.c +0 -28
  70. data/ext/carray_cast.c +1444 -209
  71. data/ext/carray_cast_func.rb +34 -21
  72. data/ext/carray_conversion.c +197 -73
  73. data/ext/carray_copy.c +32 -11
  74. data/ext/carray_core.c +514 -122
  75. data/ext/carray_count.c +140 -87
  76. data/ext/carray_element.c +18 -27
  77. data/ext/carray_factorize.c +569 -277
  78. data/ext/carray_generate.c +76 -40
  79. data/ext/carray_histogram.c +152 -94
  80. data/ext/carray_hold.c +2 -1
  81. data/ext/carray_index_classifier.c +63 -96
  82. data/ext/carray_internal.h +385 -3
  83. data/ext/carray_lazy.c +834 -79
  84. data/ext/carray_loop.c +81 -65
  85. data/ext/carray_mask.c +682 -316
  86. data/ext/carray_math_kernel.h +1 -0
  87. data/ext/carray_median_percentile.c +221 -76
  88. data/ext/carray_memory_view.c +254 -248
  89. data/ext/carray_operator.c +1089 -359
  90. data/ext/carray_order.c +133 -69
  91. data/ext/carray_partition.c +102 -56
  92. data/ext/carray_random.c +273 -239
  93. data/ext/carray_scatter.c +308 -65
  94. data/ext/carray_segment.c +257 -0
  95. data/ext/carray_slab.c +170 -70
  96. data/ext/carray_sort.c +215 -218
  97. data/ext/carray_sort_kernel.c +8 -1
  98. data/ext/carray_struct.c +99 -21
  99. data/ext/carray_test.c +167 -64
  100. data/ext/carray_time_text.c +1182 -0
  101. data/ext/carray_utils.c +363 -98
  102. data/ext/extconf.rb +27 -2
  103. data/ext/mk_call_cfunc.rb +0 -2
  104. data/ext/mk_pow5_table.rb +35 -0
  105. data/ext/mkkernel.rb +1076 -846
  106. data/ext/ruby_carray.c +7 -1
  107. data/ext/version.h +4 -4
  108. data/ext/version.rb +4 -2
  109. data/lib/carray/attribute.rb +39 -0
  110. data/lib/carray/autoload_carray.rb +19 -0
  111. data/lib/carray/autoload_method_extension.rb +6 -0
  112. data/lib/carray/axis_group.rb +174 -26
  113. data/lib/carray/basics.rb +91 -25
  114. data/lib/carray/bincount_nd.rb +6 -0
  115. data/lib/carray/block_iterator.rb +118 -48
  116. data/lib/carray/boolean_reduce.rb +21 -29
  117. data/lib/carray/categorical.rb +94 -26
  118. data/lib/carray/categorical_iterator.rb +333 -826
  119. data/lib/carray/complex.rb +36 -29
  120. data/lib/carray/conditional.rb +94 -7
  121. data/lib/carray/const_string.rb +46 -0
  122. data/lib/carray/frame/concat.rb +157 -6
  123. data/lib/carray/frame/convert.rb +13 -7
  124. data/lib/carray/frame/csv_parser.rb +589 -82
  125. data/lib/carray/frame/describe.rb +79 -0
  126. data/lib/carray/frame/frame.rb +124 -25
  127. data/lib/carray/frame/group.rb +189 -63
  128. data/lib/carray/frame/io.rb +412 -72
  129. data/lib/carray/frame/join.rb +134 -46
  130. data/lib/carray/frame/records.rb +37 -16
  131. data/lib/carray/frame/reshape.rb +448 -0
  132. data/lib/carray/frame/sort.rb +26 -2
  133. data/lib/carray/frame/verbs.rb +715 -48
  134. data/lib/carray/frame.rb +2 -0
  135. data/lib/carray/fuse_source.rb +111 -2
  136. data/lib/carray/fusion.rb +229 -38
  137. data/lib/carray/inspect.rb +29 -11
  138. data/lib/carray/iterator.rb +14 -2
  139. data/lib/carray/lazy.rb +54 -30
  140. data/lib/carray/mask_gap_fill.rb +66 -52
  141. data/lib/carray/math.rb +32 -19
  142. data/lib/carray/meld_reduce.rb +40 -7
  143. data/lib/carray/methods/align_addr.rb +8 -4
  144. data/lib/carray/methods/bincount.rb +2 -2
  145. data/lib/carray/methods/bit_string.rb +14 -3
  146. data/lib/carray/methods/composition.rb +16 -10
  147. data/lib/carray/methods/factorize.rb +2 -2
  148. data/lib/carray/methods/gather_nd.rb +13 -2
  149. data/lib/carray/methods/insert_block.rb +9 -14
  150. data/lib/carray/methods/is_in.rb +117 -4
  151. data/lib/carray/methods/join.rb +1 -1
  152. data/lib/carray/methods/locate_addr.rb +177 -36
  153. data/lib/carray/methods/mode.rb +18 -1
  154. data/lib/carray/methods/repeat.rb +1 -20
  155. data/lib/carray/methods/resize.rb +21 -23
  156. data/lib/carray/methods/snap.rb +34 -12
  157. data/lib/carray/methods/unique.rb +11 -2
  158. data/lib/carray/record_order.rb +208 -0
  159. data/lib/carray/runtime.rb +14 -11
  160. data/lib/carray/segment_iterator.rb +990 -0
  161. data/lib/carray/serialize.rb +197 -27
  162. data/lib/carray/slab_iterator.rb +51 -27
  163. data/lib/carray/stack.rb +10 -4
  164. data/lib/carray/string_operation_extension.rb +4 -3
  165. data/lib/carray/struct.rb +142 -51
  166. data/lib/carray/struct_builder.rb +110 -14
  167. data/lib/carray/table.rb +2 -2
  168. data/lib/carray/time.rb +517 -103
  169. data/lib/carray/window_iterator.rb +127 -72
  170. data/lib/carray.rb +2 -2
  171. data/yard-stubs/ca_obj_array.rb +4 -4
  172. data/yard-stubs/ca_obj_bitarray.rb +7 -0
  173. data/yard-stubs/ca_obj_bitfield.rb +23 -12
  174. data/yard-stubs/ca_obj_fake.rb +1 -1
  175. data/yard-stubs/ca_obj_field.rb +1 -1
  176. data/yard-stubs/ca_obj_refer.rb +3 -3
  177. data/yard-stubs/ca_obj_roll.rb +0 -1
  178. data/yard-stubs/ca_obj_stride.rb +10 -7
  179. data/yard-stubs/ca_obj_transpose.rb +1 -1
  180. data/yard-stubs/ca_obj_window.rb +1 -2
  181. data/yard-stubs/carray_access.rb +5 -4
  182. data/yard-stubs/carray_broadcast.rb +1 -1
  183. data/yard-stubs/carray_cast.rb +78 -43
  184. data/yard-stubs/carray_conversion.rb +13 -1
  185. data/yard-stubs/carray_copy.rb +8 -3
  186. data/yard-stubs/carray_core.rb +3 -3
  187. data/yard-stubs/carray_count.rb +9 -0
  188. data/yard-stubs/carray_lazy.rb +5 -1
  189. data/yard-stubs/carray_loop.rb +4 -1
  190. data/yard-stubs/carray_mask.rb +34 -10
  191. data/yard-stubs/carray_math.rb +25 -13
  192. data/yard-stubs/carray_median_percentile.rb +10 -6
  193. data/yard-stubs/carray_order.rb +34 -13
  194. data/yard-stubs/carray_scatter.rb +10 -3
  195. data/yard-stubs/carray_segment.rb +72 -0
  196. data/yard-stubs/carray_slab.rb +2 -1
  197. data/yard-stubs/carray_sort.rb +43 -3
  198. data/yard-stubs/carray_test.rb +10 -0
  199. data/yard-stubs/carray_utils.rb +0 -26
  200. metadata +11 -19
  201. data/ext/ca_for_each_element.h +0 -239
  202. data/ext/carray_build_flags.h +0 -3
  203. data/ext/carray_config.h +0 -28
  204. data/ext/carray_kernels_bincmp.c +0 -4446
  205. data/ext/carray_kernels_binop.c +0 -11001
  206. data/ext/carray_kernels_init.c +0 -1131
  207. data/ext/carray_kernels_map.c +0 -3467
  208. data/ext/carray_kernels_moncmp.c +0 -2097
  209. data/ext/carray_kernels_monop.c +0 -18313
  210. data/ext/carray_kernels_reduce_aggregate.c +0 -26005
  211. data/ext/carray_kernels_reduce_boolean.c +0 -330
  212. data/ext/carray_kernels_reduce_cumulative.c +0 -14862
  213. data/ext/carray_kernels_reduce_extreme.c +0 -17494
  214. data/ext/carray_kernels_reduce_variance.c +0 -3910
  215. data/ext/carray_kernels_scan.c +0 -3693
  216. data/ext/carray_kernels_search.c +0 -32218
  217. data/ext/carray_kernels_sort.c +0 -10626
  218. data/ext/carray_kernels_triop.c +0 -1392
@@ -1,239 +0,0 @@
1
- /* ---------------------------------------------------------------------------
2
- *
3
- * ca_for_each_element.h -- sweep ELEMENT macro family (single-array, lexical
4
- * scope body) for ext authors.
5
- *
6
- * PROPOSAL_L0_AUTHOR_SURFACE L0.2a (2026-06-11). Builds on the sweep engine
7
- * helper (ca_sweep_engine.{c,h}, L0.1) for the xfer_all-aware acquire/release
8
- * lifecycle. Provides 5 macro forms for single-array element-wise loops
9
- * with author-inline body and lexical-scope state capture.
10
- *
11
- * Forms (Q2 = gamma: READ by-value, INOUT / OUT by-lvalue):
12
- *
13
- * CA_FOR_EACH_ELEMENT(st1, ca, T, x)
14
- * Read-only loop; per-iter x = cell value (T rvalue convention but
15
- * declared lvalue for assignment). Mask policy: NO_MASK (raises if
16
- * INPUT has mask; use _MASKED form to handle).
17
- *
18
- * CA_FOR_EACH_ELEMENT_MASKED(st1, ca, T, x, m)
19
- * Read-only with mask byte m (1 = masked). Author inspects m and
20
- * decides; m == 0 if source has no mask.
21
- *
22
- * CA_FOR_EACH_ELEMENT_INOUT(st2, ca_in, ca_out, T_IN, T_OUT, in, out)
23
- * Map kernel; per-iter in = read input, body assigns to out (lvalue),
24
- * out is written back to ca_out. Strict same-shape check on init
25
- * (raises on mismatch). NO_MASK on input.
26
- *
27
- * CA_FOR_EACH_ELEMENT_INOUT_MASKED(st2, ca_in, ca_out, T_IN, T_OUT,
28
- * in, out, m_in, m_out)
29
- * Map kernel with mask; per-iter m_in = input mask byte (or 0 if no
30
- * input mask), author writes m_out (1 = mark output cell masked) and
31
- * out. m_out written back to ca_out's mask.
32
- *
33
- * CA_FOR_EACH_ELEMENT_OUT(st1, ca_out, T, out)
34
- * Write-only; body assigns to out (lvalue). Use for init / iota /
35
- * fill patterns. NO_MASK (output mask cleared).
36
- *
37
- * Usage pattern:
38
- *
39
- * ca_each_state_t st;
40
- * double x;
41
- * CA_FOR_EACH_ELEMENT(st, ca, double, x) {
42
- * accumulator += x;
43
- * }
44
- *
45
- * Constraints (same as CA_FOR_EACH_FIBER family):
46
- * - State (st1 / st2) is author-declared on the stack.
47
- * - `break;` from body exits cleanly (release runs in outer for's
48
- * teardown clause).
49
- * - `return;` from body LEAKS scratch buffers / attached views — do
50
- * not return early from the macro body; restructure to break.
51
- * - Macros are NOT statement-equivalent (expand to nested for); no
52
- * trailing `else`.
53
- * - `T` must be the data_type of `ca` (matched via ca->data_type and
54
- * ca->bytes — engine does not auto-cast; use rb_ca_wrap_readonly /
55
- * rb_ca_template_with_type at the call site if cast needed).
56
- *
57
- * --------------------------------------------------------------------------- */
58
-
59
- #ifndef CA_FOR_EACH_ELEMENT_H
60
- #define CA_FOR_EACH_ELEMENT_H
61
-
62
- #include "carray.h"
63
- #include "ca_sweep_engine.h"
64
-
65
- /* Stack-allocated state holders for 1- and 2-operand sweep ELEMENT macros.
66
- * Embeds the per-op bookkeeping arrays + the core ca_sweep_state_t in one
67
- * struct so authors declare just one variable. */
68
-
69
- typedef struct {
70
- CArray *cx[1];
71
- char *base[1];
72
- ca_size_t stride[1];
73
- char *owned_buf[1];
74
- int attached[1];
75
- char *base_orig[1];
76
- ca_sweep_state_t core;
77
- } ca_each_state_t;
78
-
79
- typedef struct {
80
- CArray *cx[2];
81
- char *base[2];
82
- ca_size_t stride[2];
83
- char *owned_buf[2];
84
- int attached[2];
85
- char *base_orig[2];
86
- ca_sweep_state_t core;
87
- } ca_each_map_state_t;
88
-
89
- /* Internal init helpers: wire the embedded arrays into core, set fsync /
90
- * no_mask / src_label. Called via comma-expression inside the macro
91
- * for-loop init clause. */
92
-
93
- #define CA_SWEEP_WIRE_1_(_st1, _ca0, _fsync, _no_mask, _label) ( \
94
- (_st1).cx[0] = (CArray *)(_ca0), \
95
- (_st1).core.n_ops = 1, \
96
- (_st1).core.fsync = (_fsync), \
97
- (_st1).core.cx = (_st1).cx, \
98
- (_st1).core.base = (_st1).base, \
99
- (_st1).core.stride = (_st1).stride, \
100
- (_st1).core.owned_buf = (_st1).owned_buf, \
101
- (_st1).core.attached = (_st1).attached, \
102
- (_st1).core.base_orig = (_st1).base_orig, \
103
- (_st1).core.no_mask = (_no_mask), \
104
- (_st1).core.src_label = (_label))
105
-
106
- #define CA_SWEEP_WIRE_2_(_st2, _ca0, _ca1, _fsync, _no_mask, _label) ( \
107
- (_st2).cx[0] = (CArray *)(_ca0), \
108
- (_st2).cx[1] = (CArray *)(_ca1), \
109
- (_st2).core.n_ops = 2, \
110
- (_st2).core.fsync = (_fsync), \
111
- (_st2).core.cx = (_st2).cx, \
112
- (_st2).core.base = (_st2).base, \
113
- (_st2).core.stride = (_st2).stride, \
114
- (_st2).core.owned_buf = (_st2).owned_buf, \
115
- (_st2).core.attached = (_st2).attached, \
116
- (_st2).core.base_orig = (_st2).base_orig, \
117
- (_st2).core.no_mask = (_no_mask), \
118
- (_st2).core.src_label = (_label))
119
-
120
- /* ---------- 5 author-facing macro forms ----------
121
- *
122
- * All 5 forms expand to a 3-level nested for:
123
- * outer : acquire_chunked / release_chunked (= lifecycle scope)
124
- * middle : ca_sweep_next_chunk loop (= chunk iteration)
125
- * inner : per-cell loop within chunk_n
126
- *
127
- * Memory peak per AC2: INPUT non-alias views materialise into a single
128
- * chunk scratch (~32KB at f64). m0 (= masked form) is chunk-sized too and
129
- * re-gathered per chunk, so the macro reads at m0[k] -- indexed within the
130
- * chunk, not by the flat cell index.
131
- *
132
- * For MASKED forms (m / m_in / m_out): when source has no mask, m0 is
133
- * NULL and m / m_in == 0 always. m_out writes during INOUT_MASKED are
134
- * silently dropped if no INPUT mask exists (= AC4 mask-creation on
135
- * INOUT MASKED with no source mask is a future enhancement; current
136
- * convention follows the FIBER family's MASKED form).
137
- */
138
-
139
- /* (1) READ-only, NO_MASK */
140
- #define CA_FOR_EACH_ELEMENT(_st1, _ca, T, x) \
141
- for ( int __cfe_init = (CA_SWEEP_WIRE_1_((_st1), (_ca), "0", 1, \
142
- "CA_FOR_EACH_ELEMENT"), \
143
- ca_sweep_acquire_chunked(&(_st1).core), 1); \
144
- __cfe_init; \
145
- __cfe_init = 0, ca_sweep_release_chunked(&(_st1).core) ) \
146
- for ( ; ca_sweep_next_chunk(&(_st1).core); ) \
147
- for ( ca_size_t __cfe_k = 0; \
148
- __cfe_k < (_st1).core.chunk_n \
149
- && (((x) = *(T *)((_st1).core.base[0] \
150
- + __cfe_k * (_st1).core.stride[0])), 1); \
151
- __cfe_k++ )
152
-
153
- /* (2) READ-only, MASKED (m is 1 if masked, 0 otherwise; 0 if no source mask) */
154
- #define CA_FOR_EACH_ELEMENT_MASKED(_st1, _ca, T, x, m) \
155
- for ( int __cfem_init = (CA_SWEEP_WIRE_1_((_st1), (_ca), "0", 0, \
156
- "CA_FOR_EACH_ELEMENT_MASKED"), \
157
- ca_sweep_acquire_chunked(&(_st1).core), 1); \
158
- __cfem_init; \
159
- __cfem_init = 0, ca_sweep_release_chunked(&(_st1).core) ) \
160
- for ( ; ca_sweep_next_chunk(&(_st1).core); ) \
161
- for ( ca_size_t __cfem_k = 0; \
162
- __cfem_k < (_st1).core.chunk_n \
163
- && (((x) = *(T *)((_st1).core.base[0] \
164
- + __cfem_k * (_st1).core.stride[0])), \
165
- ((m) = (_st1).core.m0 \
166
- ? (_st1).core.m0[__cfem_k] \
167
- : (boolean8_t)0), \
168
- 1); \
169
- __cfem_k++ )
170
-
171
- /* (3) INOUT map (NO_MASK). Strict same-shape check pre-acquire. */
172
- #define CA_FOR_EACH_ELEMENT_INOUT(_st2, _ca_in, _ca_out, \
173
- T_IN, T_OUT, in, out) \
174
- for ( int __cfei_init = ( \
175
- ca_sweep_check_same_shape((CArray *)(_ca_in), \
176
- (CArray *)(_ca_out), \
177
- "CA_FOR_EACH_ELEMENT_INOUT"), \
178
- CA_SWEEP_WIRE_2_((_st2), (_ca_in), (_ca_out), "01", 1, \
179
- "CA_FOR_EACH_ELEMENT_INOUT"), \
180
- ca_sweep_acquire_chunked(&(_st2).core), \
181
- 1); \
182
- __cfei_init; \
183
- __cfei_init = 0, ca_sweep_release_chunked(&(_st2).core) ) \
184
- for ( ; ca_sweep_next_chunk(&(_st2).core); ) \
185
- for ( ca_size_t __cfei_k = 0; \
186
- __cfei_k < (_st2).core.chunk_n \
187
- && (((in) = *(T_IN *)((_st2).core.base[0] \
188
- + __cfei_k * (_st2).core.stride[0])), \
189
- 1); \
190
- (*(T_OUT *)((_st2).core.base[1] \
191
- + __cfei_k * (_st2).core.stride[1]) = (out)), \
192
- __cfei_k++ )
193
-
194
- /* (4) INOUT map (MASKED). Author writes m_out per cell. */
195
- #define CA_FOR_EACH_ELEMENT_INOUT_MASKED(_st2, _ca_in, _ca_out, \
196
- T_IN, T_OUT, \
197
- in, out, m_in, m_out) \
198
- for ( int __cfeim_init = ( \
199
- ca_sweep_check_same_shape((CArray *)(_ca_in), \
200
- (CArray *)(_ca_out), \
201
- "CA_FOR_EACH_ELEMENT_INOUT_MASKED"), \
202
- CA_SWEEP_WIRE_2_((_st2), (_ca_in), (_ca_out), "01", 0, \
203
- "CA_FOR_EACH_ELEMENT_INOUT_MASKED"), \
204
- ca_sweep_acquire_chunked(&(_st2).core), \
205
- 1); \
206
- __cfeim_init; \
207
- __cfeim_init = 0, ca_sweep_release_chunked(&(_st2).core) ) \
208
- for ( ; ca_sweep_next_chunk(&(_st2).core); ) \
209
- for ( ca_size_t __cfeim_k = 0; \
210
- __cfeim_k < (_st2).core.chunk_n \
211
- && (((in) = *(T_IN *)((_st2).core.base[0] \
212
- + __cfeim_k * (_st2).core.stride[0])), \
213
- ((m_in) = (_st2).core.m0 \
214
- ? (_st2).core.m0[__cfeim_k] \
215
- : (boolean8_t)0), \
216
- ((m_out) = (m_in)), \
217
- 1); \
218
- (*(T_OUT *)((_st2).core.base[1] \
219
- + __cfeim_k * (_st2).core.stride[1]) = (out)), \
220
- (((_st2).core.m0) \
221
- ? ((_st2).core.m0[__cfeim_k] = (m_out)) \
222
- : (boolean8_t)0), \
223
- __cfeim_k++ )
224
-
225
- /* (5) WRITE-only (init / iota / fill). */
226
- #define CA_FOR_EACH_ELEMENT_OUT(_st1, _ca_out, T, out) \
227
- for ( int __cfeo_init = (CA_SWEEP_WIRE_1_((_st1), (_ca_out), "1", 0, \
228
- "CA_FOR_EACH_ELEMENT_OUT"), \
229
- ca_sweep_acquire_chunked(&(_st1).core), 1); \
230
- __cfeo_init; \
231
- __cfeo_init = 0, ca_sweep_release_chunked(&(_st1).core) ) \
232
- for ( ; ca_sweep_next_chunk(&(_st1).core); ) \
233
- for ( ca_size_t __cfeo_k = 0; \
234
- __cfeo_k < (_st1).core.chunk_n; \
235
- (*(T *)((_st1).core.base[0] \
236
- + __cfeo_k * (_st1).core.stride[0]) = (out)), \
237
- __cfeo_k++ )
238
-
239
- #endif /* CA_FOR_EACH_ELEMENT_H */
@@ -1,3 +0,0 @@
1
- /* GENERATED by extconf.rb: the flags this build's arithmetic
2
- was compiled with. See CArray::BUILD_FLAGS. */
3
- #define CA_BUILD_FLAGS "-O3 -fno-fast-math -fopenmp-simd -march=native"
data/ext/carray_config.h DELETED
@@ -1,28 +0,0 @@
1
- #ifndef CARRAY_CONFIG_H
2
- #define CARRAY_CONFIG_H
3
- #define HAVE_SYS_TYPES_H 1
4
- #define HAVE_STDINT_H 1
5
- #define HAVE_TYPE_INT8_T 1
6
- #define HAVE_TYPE_UINT8_T 1
7
- #define HAVE_TYPE_INT16_T 1
8
- #define HAVE_TYPE_UINT16_T 1
9
- #define HAVE_TYPE_INT32_T 1
10
- #define HAVE_TYPE_UINT32_T 1
11
- #define HAVE_TYPE_INT64_T 1
12
- #define HAVE_TYPE_UINT64_T 1
13
- #define HAVE_TYPE_LONG_LONG 1
14
- #define HAVE_TYPE_FLOAT 1
15
- #define HAVE_TYPE_DOUBLE 1
16
- #define HAVE_COMPLEX_H 1
17
- #define HAVE_TYPE_FLOAT_COMPLEX 1
18
- #define HAVE_TYPE_DOUBLE_COMPLEX 1
19
- #define HAVE_TGMATH_H 1
20
- #define HAVE_ATAN2 1
21
- #define HAVE_HYPOT 1
22
- #define HAVE_LGAMMA 1
23
- #define HAVE_EXPM1 1
24
- #define HAVE_MERGESORT 1
25
- #define HAVE_STRPTIME 1
26
- #define HAVE_RB_ARITHMETIC_SEQUENCE_EXTRACT 1
27
- #define HAVE_RUBY_MEMORY_VIEW_H 1
28
- #endif