carray 3.0.2 → 3.0.4
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/CHANGELOG.md +568 -0
- data/README.md +6 -6
- data/carray.gemspec +1 -1
- data/ext/ca_axis_descriptor.h +27 -24
- data/ext/ca_axis_dispatch.c +220 -0
- data/ext/ca_axis_group.c +201 -123
- data/ext/ca_binop_dispatch.c +46 -52
- data/ext/ca_binop_dispatch.h +1 -1
- data/ext/ca_categorical_iterator.c +249 -183
- data/ext/ca_compare.c +7 -12
- data/ext/ca_for_buffer.h +21 -68
- data/ext/ca_group_iter.c +38 -23
- data/ext/ca_kernel_iterator.c +1765 -2076
- data/ext/ca_kernel_iterator.h +584 -566
- data/ext/ca_monop_dispatch.c +86 -63
- data/ext/ca_monop_dispatch.h +5 -0
- data/ext/ca_obj_array.c +223 -56
- data/ext/ca_obj_bincmp.c +172 -138
- data/ext/ca_obj_binop.c +116 -230
- data/ext/ca_obj_bitarray.c +40 -26
- data/ext/ca_obj_bitfield.c +100 -68
- data/ext/ca_obj_block.c +19 -9
- data/ext/ca_obj_byte_swap.c +45 -46
- data/ext/ca_obj_const_string.c +269 -44
- data/ext/ca_obj_face.c +612 -89
- data/ext/ca_obj_face.h +111 -47
- data/ext/ca_obj_fake.c +36 -79
- data/ext/ca_obj_farray.c +7 -3
- data/ext/ca_obj_field.c +33 -8
- data/ext/ca_obj_fixlen_string.c +23 -24
- data/ext/ca_obj_grid.c +541 -210
- data/ext/ca_obj_meld.c +331 -111
- data/ext/ca_obj_moncmp.c +80 -65
- data/ext/ca_obj_monop.c +177 -149
- data/ext/ca_obj_object.c +664 -248
- data/ext/ca_obj_record.c +63 -23
- data/ext/ca_obj_reduce.c +18 -16
- data/ext/ca_obj_refer.c +140 -58
- data/ext/ca_obj_remap.c +85 -24
- data/ext/ca_obj_repeat.c +24 -9
- data/ext/ca_obj_roll.c +121 -16
- data/ext/ca_obj_select.c +61 -58
- data/ext/ca_obj_select_axis.c +73 -107
- data/ext/ca_obj_shift.c +32 -102
- data/ext/ca_obj_stack.c +372 -122
- data/ext/ca_obj_stride.c +348 -140
- data/ext/ca_obj_string.c +88 -22
- data/ext/ca_obj_tile.c +38 -21
- data/ext/ca_obj_time.c +45 -31
- data/ext/ca_obj_timedelta.c +43 -29
- data/ext/ca_obj_transpose.c +17 -6
- data/ext/ca_obj_triop.c +125 -141
- data/ext/ca_obj_window.c +330 -44
- data/ext/ca_op_ipower.c +24 -11
- data/ext/ca_op_powi.h +57 -30
- data/ext/ca_pow5_table.h +656 -0
- data/ext/ca_sort_kernels.h +70 -0
- data/ext/ca_sweep_engine.c +104 -81
- data/ext/ca_sweep_engine.h +7 -20
- data/ext/ca_triop_dispatch.c +4 -1
- data/ext/ca_triop_dispatch.h +5 -2
- data/ext/caframe_csv_reader.c +542 -0
- data/ext/carray.h +241 -92
- data/ext/carray_access.c +608 -276
- data/ext/carray_address_basis.c +494 -97
- data/ext/carray_attribute.c +129 -4
- data/ext/carray_bincount.c +39 -7
- data/ext/carray_broadcast.c +56 -19
- data/ext/carray_build_flags.h +1 -1
- data/ext/carray_call_cfunc.c +108 -28
- data/ext/carray_cast.c +1576 -223
- data/ext/carray_cast_func.rb +77 -24
- data/ext/carray_class.c +4 -3
- data/ext/carray_conversion.c +208 -75
- data/ext/carray_copy.c +82 -24
- data/ext/carray_core.c +646 -162
- data/ext/carray_count.c +171 -88
- data/ext/carray_element.c +94 -60
- data/ext/carray_factorize.c +670 -324
- data/ext/carray_generate.c +260 -83
- data/ext/carray_histogram.c +209 -106
- data/ext/carray_hold.c +14 -16
- data/ext/carray_index_classifier.c +422 -243
- data/ext/carray_internal.h +692 -3
- data/ext/carray_kernels_bincmp.c +7 -0
- data/ext/carray_kernels_binop.c +487 -120
- data/ext/carray_kernels_init.c +653 -50
- data/ext/carray_kernels_moncmp.c +15 -8
- data/ext/carray_kernels_monop.c +99 -43
- data/ext/carray_kernels_reduce_aggregate.c +3925 -6112
- data/ext/carray_kernels_reduce_boolean.c +112 -36
- data/ext/carray_kernels_reduce_cumulative.c +2127 -6903
- data/ext/carray_kernels_reduce_extreme.c +3032 -2892
- data/ext/carray_kernels_reduce_variance.c +439 -500
- data/ext/carray_kernels_scan.c +1097 -488
- data/ext/carray_kernels_search.c +3787 -2176
- data/ext/carray_kernels_sort.c +1200 -920
- data/ext/carray_kernels_triop.c +479 -7
- data/ext/carray_key_windows.c +216 -0
- data/ext/carray_lazy.c +967 -153
- data/ext/carray_loop.c +81 -65
- data/ext/carray_mask.c +910 -324
- data/ext/carray_math_kernel.h +1 -0
- data/ext/carray_median_percentile.c +299 -100
- data/ext/carray_memory_view.c +872 -758
- data/ext/carray_operator.c +1171 -364
- data/ext/carray_order.c +505 -133
- data/ext/carray_partition.c +112 -65
- data/ext/carray_random.c +327 -239
- data/ext/carray_round.c +273 -0
- data/ext/carray_scatter.c +346 -78
- data/ext/carray_segment.c +257 -0
- data/ext/carray_slab.c +249 -86
- data/ext/carray_sort.c +224 -227
- data/ext/carray_sort_kernel.c +8 -1
- data/ext/carray_struct.c +118 -39
- data/ext/carray_test.c +193 -69
- data/ext/carray_time_text.c +1182 -0
- data/ext/carray_undef.c +4 -0
- data/ext/carray_utils.c +579 -113
- data/ext/extconf.rb +27 -2
- data/ext/mk_call_cfunc.rb +19 -4
- data/ext/mk_pow5_table.rb +35 -0
- data/ext/mkkernel.rb +1202 -1014
- data/ext/ruby_carray.c +17 -5
- data/ext/version.h +4 -4
- data/ext/version.rb +4 -2
- data/lib/carray/attribute.rb +160 -17
- data/lib/carray/autoload_carray.rb +23 -27
- data/lib/carray/autoload_method_extension.rb +20 -5
- data/lib/carray/axis_group.rb +360 -63
- data/lib/carray/basics.rb +162 -28
- data/lib/carray/bincount_nd.rb +18 -2
- data/lib/carray/block_iterator.rb +231 -58
- data/lib/carray/boolean_reduce.rb +34 -42
- data/lib/carray/categorical.rb +242 -52
- data/lib/carray/categorical_iterator.rb +437 -827
- data/lib/carray/complex.rb +41 -34
- data/lib/carray/conditional.rb +150 -14
- data/lib/carray/const_string.rb +59 -4
- data/lib/carray/construct.rb +15 -11
- data/lib/carray/data_type_extension.rb +1 -0
- data/lib/carray/distance_limit.rb +77 -0
- data/lib/carray/fixlen_string.rb +7 -1
- data/lib/carray/frame/column_verbs.rb +70 -0
- data/lib/carray/frame/concat.rb +157 -6
- data/lib/carray/frame/convert.rb +82 -7
- data/lib/carray/frame/csv_parser.rb +688 -87
- data/lib/carray/frame/describe.rb +80 -0
- data/lib/carray/frame/frame.rb +369 -45
- data/lib/carray/frame/group.rb +631 -90
- data/lib/carray/frame/io.rb +506 -79
- data/lib/carray/frame/join.rb +411 -62
- data/lib/carray/frame/records.rb +116 -19
- data/lib/carray/frame/reshape.rb +455 -0
- data/lib/carray/frame/sort.rb +30 -18
- data/lib/carray/frame/verbs.rb +868 -61
- data/lib/carray/frame/windows.rb +117 -0
- data/lib/carray/frame.rb +4 -0
- data/lib/carray/fuse_source.rb +118 -2
- data/lib/carray/fusion.rb +257 -42
- data/lib/carray/histogram.rb +6 -1
- data/lib/carray/inspect.rb +54 -13
- data/lib/carray/iterator.rb +99 -9
- data/lib/carray/key_windows.rb +620 -0
- data/lib/carray/lazy.rb +216 -193
- data/lib/carray/mask_gap_fill.rb +112 -92
- data/lib/carray/math.rb +32 -19
- data/lib/carray/meld_reduce.rb +52 -21
- data/lib/carray/methods/align_addr.rb +8 -4
- data/lib/carray/methods/bin.rb +26 -18
- data/lib/carray/methods/bincount.rb +18 -2
- data/lib/carray/methods/bit_string.rb +15 -4
- data/lib/carray/methods/choose.rb +16 -3
- data/lib/carray/methods/composition.rb +18 -10
- data/lib/carray/methods/factorize.rb +2 -2
- data/lib/carray/methods/gather_nd.rb +25 -5
- data/lib/carray/methods/insert_block.rb +9 -14
- data/lib/carray/methods/is_between.rb +59 -0
- data/lib/carray/methods/is_in.rb +140 -10
- data/lib/carray/methods/join.rb +2 -7
- data/lib/carray/methods/lag.rb +49 -0
- data/lib/carray/methods/locate_addr.rb +182 -45
- data/lib/carray/methods/mode.rb +18 -1
- data/lib/carray/methods/nunique.rb +11 -6
- data/lib/carray/methods/repeat.rb +1 -20
- data/lib/carray/methods/resize.rb +21 -23
- data/lib/carray/methods/snap.rb +34 -12
- data/lib/carray/methods/unique.rb +11 -2
- data/lib/carray/methods/value_counts.rb +4 -11
- data/lib/carray/record_order.rb +208 -0
- data/lib/carray/rng.rb +3 -0
- data/lib/carray/runtime.rb +65 -17
- data/lib/carray/segment_iterator.rb +1221 -0
- data/lib/carray/serialize.rb +214 -30
- data/lib/carray/slab_iterator.rb +101 -27
- data/lib/carray/stack.rb +10 -4
- data/lib/carray/string.rb +105 -5
- data/lib/carray/string_operation_extension.rb +12 -4
- data/lib/carray/struct.rb +137 -58
- data/lib/carray/struct_builder.rb +124 -17
- data/lib/carray/time.rb +1222 -186
- data/lib/carray/window_iterator.rb +242 -81
- data/lib/carray.rb +9 -2
- data/yard-stubs/ca_obj_array.rb +4 -4
- data/yard-stubs/ca_obj_bitarray.rb +7 -0
- data/yard-stubs/ca_obj_bitfield.rb +23 -12
- data/yard-stubs/ca_obj_fake.rb +1 -1
- data/yard-stubs/ca_obj_field.rb +5 -1
- data/yard-stubs/ca_obj_grid.rb +21 -10
- data/yard-stubs/ca_obj_refer.rb +5 -4
- data/yard-stubs/ca_obj_roll.rb +2 -3
- data/yard-stubs/ca_obj_shift.rb +5 -1
- data/yard-stubs/ca_obj_stride.rb +10 -7
- data/yard-stubs/ca_obj_tile.rb +1 -1
- data/yard-stubs/ca_obj_transpose.rb +1 -1
- data/yard-stubs/ca_obj_window.rb +9 -5
- data/yard-stubs/carray_access.rb +11 -5
- data/yard-stubs/carray_attribute.rb +0 -5
- data/yard-stubs/carray_broadcast.rb +1 -1
- data/yard-stubs/carray_cast.rb +88 -43
- data/yard-stubs/carray_conversion.rb +15 -2
- data/yard-stubs/carray_copy.rb +12 -5
- data/yard-stubs/carray_core.rb +3 -3
- data/yard-stubs/carray_count.rb +9 -0
- data/yard-stubs/carray_element.rb +10 -4
- data/yard-stubs/carray_generate.rb +21 -1
- data/yard-stubs/carray_lazy.rb +5 -1
- data/yard-stubs/carray_loop.rb +4 -1
- data/yard-stubs/carray_mask.rb +60 -12
- data/yard-stubs/carray_math.rb +52 -14
- data/yard-stubs/carray_median_percentile.rb +15 -8
- data/yard-stubs/carray_memory_view.rb +40 -23
- data/yard-stubs/carray_order.rb +61 -29
- data/yard-stubs/carray_random.rb +13 -4
- data/yard-stubs/carray_scatter.rb +21 -9
- data/yard-stubs/carray_segment.rb +72 -0
- data/yard-stubs/carray_slab.rb +10 -2
- data/yard-stubs/carray_sort.rb +49 -8
- data/yard-stubs/carray_test.rb +15 -3
- data/yard-stubs/carray_utils.rb +0 -26
- metadata +19 -5
- data/ext/ca_for_each_element.h +0 -239
- data/ext/carray_kernels_map.c +0 -3467
- data/lib/carray/arrow_tensor.rb +0 -401
- data/lib/carray/table.rb +0 -108
data/ext/ca_op_ipower.c
CHANGED
|
@@ -168,6 +168,19 @@ ca_ipower_cmplx128_t (ca_size_t n, boolean8_t *m,
|
|
|
168
168
|
while (n--) { (*p2) = op_powi_cmplx128_t(*p1, ipow); p1++; p2++; }
|
|
169
169
|
}
|
|
170
170
|
|
|
171
|
+
/* The data types the ipower kernels cover; checked before any window
|
|
172
|
+
opens, so the switches inside cannot fall through to a raise. */
|
|
173
|
+
static int
|
|
174
|
+
ca_ipower_type_ok (CArray *ca)
|
|
175
|
+
{
|
|
176
|
+
switch ( ca->data_type ) {
|
|
177
|
+
case CA_FLOAT32: case CA_FLOAT64: case CA_CMPLX64: case CA_CMPLX128:
|
|
178
|
+
return 1;
|
|
179
|
+
default:
|
|
180
|
+
return 0;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
171
184
|
/* Eager Float/Complex ** Integer producing a fresh entity output.
|
|
172
185
|
* ca is input-only, co is the write target. Mirrors rb_ca_call_monop
|
|
173
186
|
* (see carray_math* / carray_kernels.c) so operand attach is elided:
|
|
@@ -189,6 +202,10 @@ rb_ca_ipower (VALUE self, VALUE other)
|
|
|
189
202
|
|
|
190
203
|
TypedData_Get_Struct(self, CArray, &carray_data_type, ca);
|
|
191
204
|
|
|
205
|
+
if ( ! ca_ipower_type_ok(ca) ) {
|
|
206
|
+
rb_raise(rb_eCADataTypeError, "invalid data type for ipower");
|
|
207
|
+
}
|
|
208
|
+
|
|
192
209
|
co = ca_has_mask(ca) ? ca_template_safe(ca) : ca_template(ca);
|
|
193
210
|
obj = ca_wrap_struct(co);
|
|
194
211
|
|
|
@@ -196,7 +213,7 @@ rb_ca_ipower (VALUE self, VALUE other)
|
|
|
196
213
|
m = ( co->mask ) ? (boolean8_t *)co->mask->ptr : NULL;
|
|
197
214
|
|
|
198
215
|
if ( ca_attach_is_alias(ca) ) {
|
|
199
|
-
ca_attach(ca);
|
|
216
|
+
ca_attach(ca); /* window: nothing raises inside */
|
|
200
217
|
switch ( ca->data_type ) {
|
|
201
218
|
case CA_FLOAT32:
|
|
202
219
|
ca_ipower_float32_t(ca->elements, m, ca->ptr, ipow, co->ptr); break;
|
|
@@ -206,8 +223,6 @@ rb_ca_ipower (VALUE self, VALUE other)
|
|
|
206
223
|
ca_ipower_cmplx64_t(ca->elements, m, ca->ptr, ipow, co->ptr); break;
|
|
207
224
|
case CA_CMPLX128:
|
|
208
225
|
ca_ipower_cmplx128_t(ca->elements, m, ca->ptr, ipow, co->ptr); break;
|
|
209
|
-
default:
|
|
210
|
-
rb_raise(rb_eCADataTypeError, "invalid data type for ipower");
|
|
211
226
|
}
|
|
212
227
|
ca_detach(ca);
|
|
213
228
|
}
|
|
@@ -226,9 +241,6 @@ rb_ca_ipower (VALUE self, VALUE other)
|
|
|
226
241
|
ca_ipower_cmplx64_t(ca->elements, m, p1, ipow, co->ptr); break;
|
|
227
242
|
case CA_CMPLX128:
|
|
228
243
|
ca_ipower_cmplx128_t(ca->elements, m, p1, ipow, co->ptr); break;
|
|
229
|
-
default:
|
|
230
|
-
ALLOCV_END(h1);
|
|
231
|
-
rb_raise(rb_eCADataTypeError, "invalid data type for ipower");
|
|
232
244
|
}
|
|
233
245
|
ALLOCV_END(h1);
|
|
234
246
|
}
|
|
@@ -247,7 +259,11 @@ rb_ca_ipower_bang (VALUE self, VALUE other)
|
|
|
247
259
|
|
|
248
260
|
TypedData_Get_Struct(self, CArray, &carray_data_type, ca);
|
|
249
261
|
|
|
250
|
-
|
|
262
|
+
if ( ! ca_ipower_type_ok(ca) ) {
|
|
263
|
+
rb_raise(rb_eRuntimeError, "invalid data type for ipower");
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
ca_attach(ca); /* window: nothing raises inside until ca_sync_detach */
|
|
251
267
|
|
|
252
268
|
m = ( ca->mask ) ? (boolean8_t *)ca->mask->ptr : NULL;
|
|
253
269
|
|
|
@@ -260,12 +276,9 @@ rb_ca_ipower_bang (VALUE self, VALUE other)
|
|
|
260
276
|
ca_ipower_cmplx64_t(ca->elements, m, ca->ptr, ipow, ca->ptr); break;
|
|
261
277
|
case CA_CMPLX128:
|
|
262
278
|
ca_ipower_cmplx128_t(ca->elements, m, ca->ptr, ipow, ca->ptr); break;
|
|
263
|
-
default:
|
|
264
|
-
rb_raise(rb_eRuntimeError, "invalid data type for ipower");
|
|
265
279
|
}
|
|
266
280
|
|
|
267
|
-
|
|
268
|
-
ca_detach(ca);
|
|
281
|
+
ca_sync_detach(ca);
|
|
269
282
|
|
|
270
283
|
return self;
|
|
271
284
|
}
|
data/ext/ca_op_powi.h
CHANGED
|
@@ -23,9 +23,19 @@
|
|
|
23
23
|
#include "carray.h"
|
|
24
24
|
#include <stdint.h>
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
/* The text between the two markers below is also handed, as it stands, to
|
|
27
|
+
an evaluator that compiles a kernel body calling op_powi_<type>
|
|
28
|
+
(CArray.__kernel_helpers__, written into the build by mkkernel.rb). It
|
|
29
|
+
may use only <stdint.h>, float32_t / float64_t and ca_zerodiv: what such
|
|
30
|
+
an evaluator's C declares. The complex instantiations stay outside. */
|
|
31
|
+
|
|
32
|
+
/* BEGIN kernel helpers */
|
|
33
|
+
|
|
34
|
+
/* x raised to a non-negative power, by binary exponentiation. The power
|
|
35
|
+
is unsigned so that the magnitude of INT64_MIN is representable. */
|
|
36
|
+
#define op_powi_magnitude(type) \
|
|
27
37
|
static inline type \
|
|
28
|
-
|
|
38
|
+
op_powi_mag_## type (type x, uint64_t p) \
|
|
29
39
|
{ \
|
|
30
40
|
type r=1; \
|
|
31
41
|
\
|
|
@@ -35,53 +45,70 @@ op_powi_## type (type x, int64_t p) \
|
|
|
35
45
|
case 0: return 1; \
|
|
36
46
|
case 1: return x; \
|
|
37
47
|
} \
|
|
38
|
-
if (p<0) { \
|
|
39
|
-
type den = op_powi_## type(x, -p); \
|
|
40
|
-
if (den==0) ca_zerodiv(); \
|
|
41
|
-
return 1/den; \
|
|
42
|
-
}\
|
|
43
48
|
while (p) { \
|
|
44
|
-
if (
|
|
49
|
+
if ( p & 1 ) r *= x; \
|
|
45
50
|
x *= x; \
|
|
46
|
-
p
|
|
51
|
+
p >>= 1; \
|
|
47
52
|
} \
|
|
48
53
|
return r; \
|
|
49
54
|
}
|
|
50
55
|
|
|
51
|
-
|
|
56
|
+
/* An integer to a negative power is 1/x^|p| in integer division, which is
|
|
57
|
+
decided by x alone: 0 has no reciprocal, 1 and -1 keep their magnitude,
|
|
58
|
+
anything larger truncates to 0. Answering it that way, rather than by
|
|
59
|
+
computing x^|p|, keeps a power that overflows -- 2 ** -64 -- from wrapping
|
|
60
|
+
to a zero divisor. */
|
|
61
|
+
#define op_powi(type) \
|
|
62
|
+
op_powi_magnitude(type) \
|
|
52
63
|
static inline type \
|
|
53
64
|
op_powi_## type (type x, int64_t p) \
|
|
54
65
|
{ \
|
|
55
|
-
|
|
56
|
-
\
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
case 0: return 1; \
|
|
61
|
-
case 1: return x; \
|
|
66
|
+
if ( p < 0 ) { \
|
|
67
|
+
if ( x == 0 ) ca_zerodiv(); \
|
|
68
|
+
if ( x == 1 ) return 1; \
|
|
69
|
+
if ( x == (type) -1 ) return ( p % 2 ) ? x : 1; \
|
|
70
|
+
return 0; \
|
|
62
71
|
} \
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
72
|
+
return op_powi_mag_## type(x, (uint64_t) p); \
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* An unsigned x is never -1; (type) -1 is its largest value. */
|
|
76
|
+
#define op_powi_u(type) \
|
|
77
|
+
op_powi_magnitude(type) \
|
|
78
|
+
static inline type \
|
|
79
|
+
op_powi_## type (type x, int64_t p) \
|
|
80
|
+
{ \
|
|
81
|
+
if ( p < 0 ) { \
|
|
82
|
+
if ( x == 0 ) ca_zerodiv(); \
|
|
83
|
+
return ( x == 1 ) ? 1 : 0; \
|
|
71
84
|
} \
|
|
72
|
-
return
|
|
85
|
+
return op_powi_mag_## type(x, (uint64_t) p); \
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
#define op_powi_fc(type) \
|
|
89
|
+
op_powi_magnitude(type) \
|
|
90
|
+
static inline type \
|
|
91
|
+
op_powi_## type (type x, int64_t p) \
|
|
92
|
+
{ \
|
|
93
|
+
if ( p < 0 ) { \
|
|
94
|
+
return 1 / op_powi_mag_## type(x, (uint64_t) 0 - (uint64_t) p); \
|
|
95
|
+
} \
|
|
96
|
+
return op_powi_mag_## type(x, (uint64_t) p); \
|
|
73
97
|
}
|
|
74
98
|
|
|
75
99
|
op_powi(int8_t)
|
|
76
|
-
|
|
100
|
+
op_powi_u(uint8_t)
|
|
77
101
|
op_powi(int16_t)
|
|
78
|
-
|
|
102
|
+
op_powi_u(uint16_t)
|
|
79
103
|
op_powi(int32_t)
|
|
80
|
-
|
|
104
|
+
op_powi_u(uint32_t)
|
|
81
105
|
op_powi(int64_t)
|
|
82
|
-
|
|
106
|
+
op_powi_u(uint64_t)
|
|
83
107
|
op_powi_fc(float32_t)
|
|
84
108
|
op_powi_fc(float64_t)
|
|
109
|
+
|
|
110
|
+
/* END kernel helpers */
|
|
111
|
+
|
|
85
112
|
op_powi_fc(cmplx64_t)
|
|
86
113
|
op_powi_fc(cmplx128_t)
|
|
87
114
|
|