carray 3.0.4 → 3.0.5

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 (111) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +205 -0
  3. data/carray.gemspec +1 -1
  4. data/ext/ca_array_pool.c +25 -1
  5. data/ext/ca_axis_dispatch.c +13 -20
  6. data/ext/ca_categorical_iterator.c +27 -20
  7. data/ext/ca_compare.c +4 -4
  8. data/ext/ca_composite_dispatch.c +9 -9
  9. data/ext/ca_kernel_iterator.c +6 -6
  10. data/ext/ca_kernel_iterator.h +112 -83
  11. data/ext/ca_obj_array.c +69 -19
  12. data/ext/ca_obj_bincmp.c +1 -0
  13. data/ext/ca_obj_binop.c +1 -0
  14. data/ext/ca_obj_bitarray.c +5 -1
  15. data/ext/ca_obj_bitfield.c +58 -43
  16. data/ext/ca_obj_byte_swap.c +2 -1
  17. data/ext/ca_obj_const_string.c +15 -3
  18. data/ext/ca_obj_face.c +42 -1
  19. data/ext/ca_obj_field.c +13 -3
  20. data/ext/ca_obj_grid.c +52 -5
  21. data/ext/ca_obj_monop.c +46 -10
  22. data/ext/ca_obj_object.c +64 -12
  23. data/ext/ca_obj_record.c +3 -0
  24. data/ext/ca_obj_reduce.c +4 -0
  25. data/ext/ca_obj_refer.c +18 -9
  26. data/ext/ca_obj_roll.c +26 -6
  27. data/ext/ca_obj_select.c +34 -5
  28. data/ext/ca_obj_shift.c +31 -7
  29. data/ext/ca_obj_stack.c +1 -0
  30. data/ext/ca_obj_stride.c +28 -19
  31. data/ext/ca_obj_string.c +11 -2
  32. data/ext/ca_obj_tile.c +27 -7
  33. data/ext/ca_obj_transpose.c +8 -4
  34. data/ext/ca_obj_triop.c +3 -0
  35. data/ext/ca_obj_window.c +79 -50
  36. data/ext/ca_op_ipower.c +4 -4
  37. data/ext/ca_sort_kernels.h +6 -3
  38. data/ext/carray.h +33 -0
  39. data/ext/carray_access.c +16 -3
  40. data/ext/carray_attribute.c +24 -0
  41. data/ext/carray_cast.c +243 -82
  42. data/ext/carray_cast_func.rb +56 -26
  43. data/ext/carray_conversion.c +2 -2
  44. data/ext/carray_core.c +3 -0
  45. data/ext/carray_count.c +6 -0
  46. data/ext/carray_element.c +9 -4
  47. data/ext/carray_factorize.c +20 -20
  48. data/ext/carray_generate.c +8 -2
  49. data/ext/carray_histogram.c +1 -1
  50. data/ext/carray_index_classifier.c +4 -4
  51. data/ext/carray_internal.h +12 -0
  52. data/ext/carray_kernels_bincmp.c +168 -168
  53. data/ext/carray_kernels_binop.c +900 -900
  54. data/ext/carray_kernels_init.c +4 -4
  55. data/ext/carray_kernels_moncmp.c +96 -96
  56. data/ext/carray_kernels_monop.c +1984 -1984
  57. data/ext/carray_kernels_reduce_aggregate.c +1733 -1733
  58. data/ext/carray_kernels_reduce_cumulative.c +642 -642
  59. data/ext/carray_kernels_reduce_extreme.c +1150 -1150
  60. data/ext/carray_kernels_reduce_variance.c +258 -258
  61. data/ext/carray_kernels_scan.c +128 -128
  62. data/ext/carray_kernels_search.c +340 -340
  63. data/ext/carray_kernels_sort.c +295 -304
  64. data/ext/carray_kernels_triop.c +114 -114
  65. data/ext/carray_key_windows.c +4 -0
  66. data/ext/carray_mask.c +45 -22
  67. data/ext/carray_memory_view.c +2 -2
  68. data/ext/carray_operator.c +5 -5
  69. data/ext/carray_order.c +227 -8
  70. data/ext/carray_random.c +18 -18
  71. data/ext/carray_scatter.c +24 -7
  72. data/ext/carray_slab.c +32 -9
  73. data/ext/carray_sort.c +224 -16
  74. data/ext/carray_sort_kernel.c +5 -7
  75. data/ext/carray_struct.c +35 -43
  76. data/ext/carray_time_text.c +4 -2
  77. data/ext/carray_utils.c +63 -21
  78. data/ext/mkkernel.rb +210 -115
  79. data/ext/version.h +4 -4
  80. data/lib/carray/attribute.rb +17 -4
  81. data/lib/carray/basics.rb +27 -7
  82. data/lib/carray/categorical.rb +30 -16
  83. data/lib/carray/categorical_iterator.rb +6 -6
  84. data/lib/carray/const_string.rb +10 -0
  85. data/lib/carray/data_type_extension.rb +8 -1
  86. data/lib/carray/fixlen_string.rb +41 -2
  87. data/lib/carray/frame/column_verbs.rb +4 -3
  88. data/lib/carray/frame/concat.rb +17 -3
  89. data/lib/carray/frame/frame.rb +6 -7
  90. data/lib/carray/frame/group.rb +100 -13
  91. data/lib/carray/frame/io.rb +3 -1
  92. data/lib/carray/fuse_source.rb +31 -2
  93. data/lib/carray/lazy.rb +35 -0
  94. data/lib/carray/methods/is_in.rb +8 -1
  95. data/lib/carray/segment_iterator.rb +12 -8
  96. data/lib/carray/serialize.rb +19 -2
  97. data/lib/carray/stack.rb +15 -12
  98. data/lib/carray/string.rb +8 -0
  99. data/lib/carray/string_operation_extension.rb +13 -5
  100. data/lib/carray/struct_builder.rb +5 -3
  101. data/lib/carray/time.rb +107 -68
  102. data/yard-stubs/ca_obj_transpose.rb +5 -4
  103. data/yard-stubs/carray_attribute.rb +3 -1
  104. data/yard-stubs/carray_cast.rb +2 -0
  105. data/yard-stubs/carray_conversion.rb +5 -1
  106. data/yard-stubs/carray_element.rb +7 -6
  107. data/yard-stubs/carray_mask.rb +8 -3
  108. data/yard-stubs/carray_math.rb +14 -4
  109. data/yard-stubs/carray_order.rb +100 -4
  110. data/yard-stubs/carray_scatter.rb +7 -5
  111. metadata +1 -1
@@ -53,7 +53,7 @@ variancep_ki_native_i8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
53
53
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
54
54
  CArray *co;
55
55
  GetCArray(vout, co);
56
- double *op = (double *) co->ptr;
56
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
57
57
  ca_iter_state st;
58
58
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
59
59
  slab_axes, naxes, 0);
@@ -78,14 +78,14 @@ variancep_ki_native_i8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
78
78
  op_mask = (boolean8_t *) co->mask->ptr;
79
79
  }
80
80
  op_mask[out_i] = 1;
81
- op[out_i++] = (double) 0.0;
81
+ op[out_i++] = (ca_u_float64_t) 0;
82
82
  } else {
83
83
  double mean = sum / (double) n_valid;
84
84
  /* Pass 2: M2 = Σ (x - mean)² */
85
85
  double M2 = 0.0;
86
86
  ca_size_t __unused_mc = 0;
87
87
  CA_SLAB_REDUCE_SUM8_EX(int8_t, double, st, p, m, M2, 0.0, __variancep_i8_P2EXPR, __unused_mc);
88
- op[out_i++] = (double)(M2 / (double)(n_valid));
88
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid));
89
89
  }
90
90
  }
91
91
  ca_iter_state_finish(&st);
@@ -110,7 +110,7 @@ variancep_ki_native_u8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
110
110
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
111
111
  CArray *co;
112
112
  GetCArray(vout, co);
113
- double *op = (double *) co->ptr;
113
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
114
114
  ca_iter_state st;
115
115
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
116
116
  slab_axes, naxes, 0);
@@ -135,14 +135,14 @@ variancep_ki_native_u8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
135
135
  op_mask = (boolean8_t *) co->mask->ptr;
136
136
  }
137
137
  op_mask[out_i] = 1;
138
- op[out_i++] = (double) 0.0;
138
+ op[out_i++] = (ca_u_float64_t) 0;
139
139
  } else {
140
140
  double mean = sum / (double) n_valid;
141
141
  /* Pass 2: M2 = Σ (x - mean)² */
142
142
  double M2 = 0.0;
143
143
  ca_size_t __unused_mc = 0;
144
144
  CA_SLAB_REDUCE_SUM8_EX(uint8_t, double, st, p, m, M2, 0.0, __variancep_u8_P2EXPR, __unused_mc);
145
- op[out_i++] = (double)(M2 / (double)(n_valid));
145
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid));
146
146
  }
147
147
  }
148
148
  ca_iter_state_finish(&st);
@@ -167,7 +167,7 @@ variancep_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
167
167
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
168
168
  CArray *co;
169
169
  GetCArray(vout, co);
170
- double *op = (double *) co->ptr;
170
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
171
171
  ca_iter_state st;
172
172
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
173
173
  slab_axes, naxes, 0);
@@ -183,7 +183,7 @@ variancep_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
183
183
  /* Pass 1: sum = Σx (+ masked_cnt) */
184
184
  double sum = 0.0;
185
185
  ca_size_t masked_cnt = 0;
186
- CA_SLAB_REDUCE_SUM8_EX(int16_t, double, st, p, m, sum, 0.0, __variancep_i16_P1EXPR, masked_cnt);
186
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int16_t, double, st, p, m, sum, 0.0, __variancep_i16_P1EXPR, masked_cnt);
187
187
  ca_size_t n_valid = st.slab_elements - masked_cnt;
188
188
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
189
189
  if ( __trigger ) {
@@ -192,14 +192,14 @@ variancep_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
192
192
  op_mask = (boolean8_t *) co->mask->ptr;
193
193
  }
194
194
  op_mask[out_i] = 1;
195
- op[out_i++] = (double) 0.0;
195
+ op[out_i++] = (ca_u_float64_t) 0;
196
196
  } else {
197
197
  double mean = sum / (double) n_valid;
198
198
  /* Pass 2: M2 = Σ (x - mean)² */
199
199
  double M2 = 0.0;
200
200
  ca_size_t __unused_mc = 0;
201
- CA_SLAB_REDUCE_SUM8_EX(int16_t, double, st, p, m, M2, 0.0, __variancep_i16_P2EXPR, __unused_mc);
202
- op[out_i++] = (double)(M2 / (double)(n_valid));
201
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int16_t, double, st, p, m, M2, 0.0, __variancep_i16_P2EXPR, __unused_mc);
202
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid));
203
203
  }
204
204
  }
205
205
  ca_iter_state_finish(&st);
@@ -224,7 +224,7 @@ variancep_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
224
224
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
225
225
  CArray *co;
226
226
  GetCArray(vout, co);
227
- double *op = (double *) co->ptr;
227
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
228
228
  ca_iter_state st;
229
229
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
230
230
  slab_axes, naxes, 0);
@@ -240,7 +240,7 @@ variancep_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
240
240
  /* Pass 1: sum = Σx (+ masked_cnt) */
241
241
  double sum = 0.0;
242
242
  ca_size_t masked_cnt = 0;
243
- CA_SLAB_REDUCE_SUM8_EX(uint16_t, double, st, p, m, sum, 0.0, __variancep_u16_P1EXPR, masked_cnt);
243
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint16_t, double, st, p, m, sum, 0.0, __variancep_u16_P1EXPR, masked_cnt);
244
244
  ca_size_t n_valid = st.slab_elements - masked_cnt;
245
245
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
246
246
  if ( __trigger ) {
@@ -249,14 +249,14 @@ variancep_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
249
249
  op_mask = (boolean8_t *) co->mask->ptr;
250
250
  }
251
251
  op_mask[out_i] = 1;
252
- op[out_i++] = (double) 0.0;
252
+ op[out_i++] = (ca_u_float64_t) 0;
253
253
  } else {
254
254
  double mean = sum / (double) n_valid;
255
255
  /* Pass 2: M2 = Σ (x - mean)² */
256
256
  double M2 = 0.0;
257
257
  ca_size_t __unused_mc = 0;
258
- CA_SLAB_REDUCE_SUM8_EX(uint16_t, double, st, p, m, M2, 0.0, __variancep_u16_P2EXPR, __unused_mc);
259
- op[out_i++] = (double)(M2 / (double)(n_valid));
258
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint16_t, double, st, p, m, M2, 0.0, __variancep_u16_P2EXPR, __unused_mc);
259
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid));
260
260
  }
261
261
  }
262
262
  ca_iter_state_finish(&st);
@@ -281,7 +281,7 @@ variancep_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
281
281
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
282
282
  CArray *co;
283
283
  GetCArray(vout, co);
284
- double *op = (double *) co->ptr;
284
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
285
285
  ca_iter_state st;
286
286
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
287
287
  slab_axes, naxes, 0);
@@ -297,7 +297,7 @@ variancep_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
297
297
  /* Pass 1: sum = Σx (+ masked_cnt) */
298
298
  double sum = 0.0;
299
299
  ca_size_t masked_cnt = 0;
300
- CA_SLAB_REDUCE_SUM8_EX(int32_t, double, st, p, m, sum, 0.0, __variancep_i32_P1EXPR, masked_cnt);
300
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int32_t, double, st, p, m, sum, 0.0, __variancep_i32_P1EXPR, masked_cnt);
301
301
  ca_size_t n_valid = st.slab_elements - masked_cnt;
302
302
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
303
303
  if ( __trigger ) {
@@ -306,14 +306,14 @@ variancep_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
306
306
  op_mask = (boolean8_t *) co->mask->ptr;
307
307
  }
308
308
  op_mask[out_i] = 1;
309
- op[out_i++] = (double) 0.0;
309
+ op[out_i++] = (ca_u_float64_t) 0;
310
310
  } else {
311
311
  double mean = sum / (double) n_valid;
312
312
  /* Pass 2: M2 = Σ (x - mean)² */
313
313
  double M2 = 0.0;
314
314
  ca_size_t __unused_mc = 0;
315
- CA_SLAB_REDUCE_SUM8_EX(int32_t, double, st, p, m, M2, 0.0, __variancep_i32_P2EXPR, __unused_mc);
316
- op[out_i++] = (double)(M2 / (double)(n_valid));
315
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int32_t, double, st, p, m, M2, 0.0, __variancep_i32_P2EXPR, __unused_mc);
316
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid));
317
317
  }
318
318
  }
319
319
  ca_iter_state_finish(&st);
@@ -338,7 +338,7 @@ variancep_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
338
338
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
339
339
  CArray *co;
340
340
  GetCArray(vout, co);
341
- double *op = (double *) co->ptr;
341
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
342
342
  ca_iter_state st;
343
343
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
344
344
  slab_axes, naxes, 0);
@@ -354,7 +354,7 @@ variancep_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
354
354
  /* Pass 1: sum = Σx (+ masked_cnt) */
355
355
  double sum = 0.0;
356
356
  ca_size_t masked_cnt = 0;
357
- CA_SLAB_REDUCE_SUM8_EX(uint32_t, double, st, p, m, sum, 0.0, __variancep_u32_P1EXPR, masked_cnt);
357
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint32_t, double, st, p, m, sum, 0.0, __variancep_u32_P1EXPR, masked_cnt);
358
358
  ca_size_t n_valid = st.slab_elements - masked_cnt;
359
359
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
360
360
  if ( __trigger ) {
@@ -363,14 +363,14 @@ variancep_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
363
363
  op_mask = (boolean8_t *) co->mask->ptr;
364
364
  }
365
365
  op_mask[out_i] = 1;
366
- op[out_i++] = (double) 0.0;
366
+ op[out_i++] = (ca_u_float64_t) 0;
367
367
  } else {
368
368
  double mean = sum / (double) n_valid;
369
369
  /* Pass 2: M2 = Σ (x - mean)² */
370
370
  double M2 = 0.0;
371
371
  ca_size_t __unused_mc = 0;
372
- CA_SLAB_REDUCE_SUM8_EX(uint32_t, double, st, p, m, M2, 0.0, __variancep_u32_P2EXPR, __unused_mc);
373
- op[out_i++] = (double)(M2 / (double)(n_valid));
372
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint32_t, double, st, p, m, M2, 0.0, __variancep_u32_P2EXPR, __unused_mc);
373
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid));
374
374
  }
375
375
  }
376
376
  ca_iter_state_finish(&st);
@@ -395,7 +395,7 @@ variancep_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
395
395
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
396
396
  CArray *co;
397
397
  GetCArray(vout, co);
398
- double *op = (double *) co->ptr;
398
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
399
399
  ca_iter_state st;
400
400
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
401
401
  slab_axes, naxes, 0);
@@ -411,7 +411,7 @@ variancep_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
411
411
  /* Pass 1: sum = Σx (+ masked_cnt) */
412
412
  double sum = 0.0;
413
413
  ca_size_t masked_cnt = 0;
414
- CA_SLAB_REDUCE_SUM8_EX(int64_t, double, st, p, m, sum, 0.0, __variancep_i64_P1EXPR, masked_cnt);
414
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int64_t, double, st, p, m, sum, 0.0, __variancep_i64_P1EXPR, masked_cnt);
415
415
  ca_size_t n_valid = st.slab_elements - masked_cnt;
416
416
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
417
417
  if ( __trigger ) {
@@ -420,14 +420,14 @@ variancep_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
420
420
  op_mask = (boolean8_t *) co->mask->ptr;
421
421
  }
422
422
  op_mask[out_i] = 1;
423
- op[out_i++] = (double) 0.0;
423
+ op[out_i++] = (ca_u_float64_t) 0;
424
424
  } else {
425
425
  double mean = sum / (double) n_valid;
426
426
  /* Pass 2: M2 = Σ (x - mean)² */
427
427
  double M2 = 0.0;
428
428
  ca_size_t __unused_mc = 0;
429
- CA_SLAB_REDUCE_SUM8_EX(int64_t, double, st, p, m, M2, 0.0, __variancep_i64_P2EXPR, __unused_mc);
430
- op[out_i++] = (double)(M2 / (double)(n_valid));
429
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int64_t, double, st, p, m, M2, 0.0, __variancep_i64_P2EXPR, __unused_mc);
430
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid));
431
431
  }
432
432
  }
433
433
  ca_iter_state_finish(&st);
@@ -452,7 +452,7 @@ variancep_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
452
452
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
453
453
  CArray *co;
454
454
  GetCArray(vout, co);
455
- double *op = (double *) co->ptr;
455
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
456
456
  ca_iter_state st;
457
457
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
458
458
  slab_axes, naxes, 0);
@@ -468,7 +468,7 @@ variancep_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
468
468
  /* Pass 1: sum = Σx (+ masked_cnt) */
469
469
  double sum = 0.0;
470
470
  ca_size_t masked_cnt = 0;
471
- CA_SLAB_REDUCE_SUM8_EX(uint64_t, double, st, p, m, sum, 0.0, __variancep_u64_P1EXPR, masked_cnt);
471
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint64_t, double, st, p, m, sum, 0.0, __variancep_u64_P1EXPR, masked_cnt);
472
472
  ca_size_t n_valid = st.slab_elements - masked_cnt;
473
473
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
474
474
  if ( __trigger ) {
@@ -477,14 +477,14 @@ variancep_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
477
477
  op_mask = (boolean8_t *) co->mask->ptr;
478
478
  }
479
479
  op_mask[out_i] = 1;
480
- op[out_i++] = (double) 0.0;
480
+ op[out_i++] = (ca_u_float64_t) 0;
481
481
  } else {
482
482
  double mean = sum / (double) n_valid;
483
483
  /* Pass 2: M2 = Σ (x - mean)² */
484
484
  double M2 = 0.0;
485
485
  ca_size_t __unused_mc = 0;
486
- CA_SLAB_REDUCE_SUM8_EX(uint64_t, double, st, p, m, M2, 0.0, __variancep_u64_P2EXPR, __unused_mc);
487
- op[out_i++] = (double)(M2 / (double)(n_valid));
486
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint64_t, double, st, p, m, M2, 0.0, __variancep_u64_P2EXPR, __unused_mc);
487
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid));
488
488
  }
489
489
  }
490
490
  ca_iter_state_finish(&st);
@@ -509,7 +509,7 @@ variancep_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
509
509
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
510
510
  CArray *co;
511
511
  GetCArray(vout, co);
512
- double *op = (double *) co->ptr;
512
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
513
513
  ca_iter_state st;
514
514
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
515
515
  slab_axes, naxes, 0);
@@ -525,7 +525,7 @@ variancep_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
525
525
  /* Pass 1: sum = Σx (+ masked_cnt) */
526
526
  double sum = 0.0;
527
527
  ca_size_t masked_cnt = 0;
528
- CA_SLAB_REDUCE_SUM8_EX(float, double, st, p, m, sum, 0.0, __variancep_f32_P1EXPR, masked_cnt);
528
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_float32_t, double, st, p, m, sum, 0.0, __variancep_f32_P1EXPR, masked_cnt);
529
529
  ca_size_t n_valid = st.slab_elements - masked_cnt;
530
530
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
531
531
  if ( __trigger ) {
@@ -534,14 +534,14 @@ variancep_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
534
534
  op_mask = (boolean8_t *) co->mask->ptr;
535
535
  }
536
536
  op_mask[out_i] = 1;
537
- op[out_i++] = (double) 0.0;
537
+ op[out_i++] = (ca_u_float64_t) 0;
538
538
  } else {
539
539
  double mean = sum / (double) n_valid;
540
540
  /* Pass 2: M2 = Σ (x - mean)² */
541
541
  double M2 = 0.0;
542
542
  ca_size_t __unused_mc = 0;
543
- CA_SLAB_REDUCE_SUM8_EX(float, double, st, p, m, M2, 0.0, __variancep_f32_P2EXPR, __unused_mc);
544
- op[out_i++] = (double)(M2 / (double)(n_valid));
543
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_float32_t, double, st, p, m, M2, 0.0, __variancep_f32_P2EXPR, __unused_mc);
544
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid));
545
545
  }
546
546
  }
547
547
  ca_iter_state_finish(&st);
@@ -566,7 +566,7 @@ variancep_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
566
566
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
567
567
  CArray *co;
568
568
  GetCArray(vout, co);
569
- double *op = (double *) co->ptr;
569
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
570
570
  ca_iter_state st;
571
571
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
572
572
  slab_axes, naxes, 0);
@@ -582,7 +582,7 @@ variancep_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
582
582
  /* Pass 1: sum = Σx (+ masked_cnt) */
583
583
  double sum = 0.0;
584
584
  ca_size_t masked_cnt = 0;
585
- CA_SLAB_REDUCE_SUM8_EX(double, double, st, p, m, sum, 0.0, __variancep_f64_P1EXPR, masked_cnt);
585
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_float64_t, double, st, p, m, sum, 0.0, __variancep_f64_P1EXPR, masked_cnt);
586
586
  ca_size_t n_valid = st.slab_elements - masked_cnt;
587
587
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
588
588
  if ( __trigger ) {
@@ -591,14 +591,14 @@ variancep_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
591
591
  op_mask = (boolean8_t *) co->mask->ptr;
592
592
  }
593
593
  op_mask[out_i] = 1;
594
- op[out_i++] = (double) 0.0;
594
+ op[out_i++] = (ca_u_float64_t) 0;
595
595
  } else {
596
596
  double mean = sum / (double) n_valid;
597
597
  /* Pass 2: M2 = Σ (x - mean)² */
598
598
  double M2 = 0.0;
599
599
  ca_size_t __unused_mc = 0;
600
- CA_SLAB_REDUCE_SUM8_EX(double, double, st, p, m, M2, 0.0, __variancep_f64_P2EXPR, __unused_mc);
601
- op[out_i++] = (double)(M2 / (double)(n_valid));
600
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_float64_t, double, st, p, m, M2, 0.0, __variancep_f64_P2EXPR, __unused_mc);
601
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid));
602
602
  }
603
603
  }
604
604
  ca_iter_state_finish(&st);
@@ -623,7 +623,7 @@ variancep_ki_native_cmplx64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t n
623
623
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
624
624
  CArray *co;
625
625
  GetCArray(vout, co);
626
- double *op = (double *) co->ptr;
626
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
627
627
  ca_iter_state st;
628
628
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
629
629
  slab_axes, naxes, 0);
@@ -637,9 +637,9 @@ variancep_ki_native_cmplx64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t n
637
637
  boolean8_t *op_mask = NULL; /* lazily allocated on first UNDEF */
638
638
  while ( ca_iter_state_next_slab_axes(&st, &p, &m) ) {
639
639
  /* Pass 1: sum = Σx (+ masked_cnt) */
640
- cmplx64_t sum = 0;
640
+ ca_u_cmplx64_t sum = 0;
641
641
  ca_size_t masked_cnt = 0;
642
- CA_SLAB_REDUCE_SUM8_EX(cmplx64_t, cmplx64_t, st, p, m, sum, 0, __variancep_cmplx64_P1EXPR, masked_cnt);
642
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_cmplx64_t, ca_u_cmplx64_t, st, p, m, sum, 0, __variancep_cmplx64_P1EXPR, masked_cnt);
643
643
  ca_size_t n_valid = st.slab_elements - masked_cnt;
644
644
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
645
645
  if ( __trigger ) {
@@ -648,14 +648,14 @@ variancep_ki_native_cmplx64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t n
648
648
  op_mask = (boolean8_t *) co->mask->ptr;
649
649
  }
650
650
  op_mask[out_i] = 1;
651
- op[out_i++] = (double) 0.0;
651
+ op[out_i++] = (ca_u_float64_t) 0;
652
652
  } else {
653
- cmplx64_t mean = sum / (cmplx64_t)(double) n_valid;
653
+ ca_u_cmplx64_t mean = sum / (ca_u_cmplx64_t)(double) n_valid;
654
654
  /* Pass 2: M2 = Σ (x - mean)² */
655
655
  double M2 = 0.0;
656
656
  ca_size_t __unused_mc = 0;
657
- CA_SLAB_REDUCE_SUM8_EX(cmplx64_t, double, st, p, m, M2, 0.0, __variancep_cmplx64_P2EXPR, __unused_mc);
658
- op[out_i++] = (double)(M2 / (double)(n_valid));
657
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_cmplx64_t, double, st, p, m, M2, 0.0, __variancep_cmplx64_P2EXPR, __unused_mc);
658
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid));
659
659
  }
660
660
  }
661
661
  ca_iter_state_finish(&st);
@@ -680,7 +680,7 @@ variancep_ki_native_cmplx128 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t
680
680
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
681
681
  CArray *co;
682
682
  GetCArray(vout, co);
683
- double *op = (double *) co->ptr;
683
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
684
684
  ca_iter_state st;
685
685
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
686
686
  slab_axes, naxes, 0);
@@ -694,9 +694,9 @@ variancep_ki_native_cmplx128 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t
694
694
  boolean8_t *op_mask = NULL; /* lazily allocated on first UNDEF */
695
695
  while ( ca_iter_state_next_slab_axes(&st, &p, &m) ) {
696
696
  /* Pass 1: sum = Σx (+ masked_cnt) */
697
- cmplx128_t sum = 0;
697
+ ca_u_cmplx128_t sum = 0;
698
698
  ca_size_t masked_cnt = 0;
699
- CA_SLAB_REDUCE_SUM8_EX(cmplx128_t, cmplx128_t, st, p, m, sum, 0, __variancep_cmplx128_P1EXPR, masked_cnt);
699
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_cmplx128_t, ca_u_cmplx128_t, st, p, m, sum, 0, __variancep_cmplx128_P1EXPR, masked_cnt);
700
700
  ca_size_t n_valid = st.slab_elements - masked_cnt;
701
701
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
702
702
  if ( __trigger ) {
@@ -705,14 +705,14 @@ variancep_ki_native_cmplx128 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t
705
705
  op_mask = (boolean8_t *) co->mask->ptr;
706
706
  }
707
707
  op_mask[out_i] = 1;
708
- op[out_i++] = (double) 0.0;
708
+ op[out_i++] = (ca_u_float64_t) 0;
709
709
  } else {
710
- cmplx128_t mean = sum / (cmplx128_t)(double) n_valid;
710
+ ca_u_cmplx128_t mean = sum / (ca_u_cmplx128_t)(double) n_valid;
711
711
  /* Pass 2: M2 = Σ (x - mean)² */
712
712
  double M2 = 0.0;
713
713
  ca_size_t __unused_mc = 0;
714
- CA_SLAB_REDUCE_SUM8_EX(cmplx128_t, double, st, p, m, M2, 0.0, __variancep_cmplx128_P2EXPR, __unused_mc);
715
- op[out_i++] = (double)(M2 / (double)(n_valid));
714
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_cmplx128_t, double, st, p, m, M2, 0.0, __variancep_cmplx128_P2EXPR, __unused_mc);
715
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid));
716
716
  }
717
717
  }
718
718
  ca_iter_state_finish(&st);
@@ -737,7 +737,7 @@ variancep_ki_native_bool (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxe
737
737
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
738
738
  CArray *co;
739
739
  GetCArray(vout, co);
740
- double *op = (double *) co->ptr;
740
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
741
741
  ca_iter_state st;
742
742
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
743
743
  slab_axes, naxes, 0);
@@ -762,14 +762,14 @@ variancep_ki_native_bool (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxe
762
762
  op_mask = (boolean8_t *) co->mask->ptr;
763
763
  }
764
764
  op_mask[out_i] = 1;
765
- op[out_i++] = (double) 0.0;
765
+ op[out_i++] = (ca_u_float64_t) 0;
766
766
  } else {
767
767
  double mean = sum / (double) n_valid;
768
768
  /* Pass 2: M2 = Σ (x - mean)² */
769
769
  double M2 = 0.0;
770
770
  ca_size_t __unused_mc = 0;
771
771
  CA_SLAB_REDUCE_SUM8_EX(boolean8_t, double, st, p, m, M2, 0.0, __variancep_bool_P2EXPR, __unused_mc);
772
- op[out_i++] = (double)(M2 / (double)(n_valid));
772
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid));
773
773
  }
774
774
  }
775
775
  ca_iter_state_finish(&st);
@@ -1001,7 +1001,7 @@ variance_ki_native_i8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1001
1001
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
1002
1002
  CArray *co;
1003
1003
  GetCArray(vout, co);
1004
- double *op = (double *) co->ptr;
1004
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
1005
1005
  ca_iter_state st;
1006
1006
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
1007
1007
  slab_axes, naxes, 0);
@@ -1026,14 +1026,14 @@ variance_ki_native_i8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1026
1026
  op_mask = (boolean8_t *) co->mask->ptr;
1027
1027
  }
1028
1028
  op_mask[out_i] = 1;
1029
- op[out_i++] = (double) 0.0;
1029
+ op[out_i++] = (ca_u_float64_t) 0;
1030
1030
  } else {
1031
1031
  double mean = sum / (double) n_valid;
1032
1032
  /* Pass 2: M2 = Σ (x - mean)² */
1033
1033
  double M2 = 0.0;
1034
1034
  ca_size_t __unused_mc = 0;
1035
1035
  CA_SLAB_REDUCE_SUM8_EX(int8_t, double, st, p, m, M2, 0.0, __variance_i8_P2EXPR, __unused_mc);
1036
- op[out_i++] = (double)(M2 / (double)(n_valid - 1));
1036
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid - 1));
1037
1037
  }
1038
1038
  }
1039
1039
  ca_iter_state_finish(&st);
@@ -1058,7 +1058,7 @@ variance_ki_native_u8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1058
1058
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
1059
1059
  CArray *co;
1060
1060
  GetCArray(vout, co);
1061
- double *op = (double *) co->ptr;
1061
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
1062
1062
  ca_iter_state st;
1063
1063
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
1064
1064
  slab_axes, naxes, 0);
@@ -1083,14 +1083,14 @@ variance_ki_native_u8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1083
1083
  op_mask = (boolean8_t *) co->mask->ptr;
1084
1084
  }
1085
1085
  op_mask[out_i] = 1;
1086
- op[out_i++] = (double) 0.0;
1086
+ op[out_i++] = (ca_u_float64_t) 0;
1087
1087
  } else {
1088
1088
  double mean = sum / (double) n_valid;
1089
1089
  /* Pass 2: M2 = Σ (x - mean)² */
1090
1090
  double M2 = 0.0;
1091
1091
  ca_size_t __unused_mc = 0;
1092
1092
  CA_SLAB_REDUCE_SUM8_EX(uint8_t, double, st, p, m, M2, 0.0, __variance_u8_P2EXPR, __unused_mc);
1093
- op[out_i++] = (double)(M2 / (double)(n_valid - 1));
1093
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid - 1));
1094
1094
  }
1095
1095
  }
1096
1096
  ca_iter_state_finish(&st);
@@ -1115,7 +1115,7 @@ variance_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1115
1115
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
1116
1116
  CArray *co;
1117
1117
  GetCArray(vout, co);
1118
- double *op = (double *) co->ptr;
1118
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
1119
1119
  ca_iter_state st;
1120
1120
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
1121
1121
  slab_axes, naxes, 0);
@@ -1131,7 +1131,7 @@ variance_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1131
1131
  /* Pass 1: sum = Σx (+ masked_cnt) */
1132
1132
  double sum = 0.0;
1133
1133
  ca_size_t masked_cnt = 0;
1134
- CA_SLAB_REDUCE_SUM8_EX(int16_t, double, st, p, m, sum, 0.0, __variance_i16_P1EXPR, masked_cnt);
1134
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int16_t, double, st, p, m, sum, 0.0, __variance_i16_P1EXPR, masked_cnt);
1135
1135
  ca_size_t n_valid = st.slab_elements - masked_cnt;
1136
1136
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
1137
1137
  if ( __trigger ) {
@@ -1140,14 +1140,14 @@ variance_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1140
1140
  op_mask = (boolean8_t *) co->mask->ptr;
1141
1141
  }
1142
1142
  op_mask[out_i] = 1;
1143
- op[out_i++] = (double) 0.0;
1143
+ op[out_i++] = (ca_u_float64_t) 0;
1144
1144
  } else {
1145
1145
  double mean = sum / (double) n_valid;
1146
1146
  /* Pass 2: M2 = Σ (x - mean)² */
1147
1147
  double M2 = 0.0;
1148
1148
  ca_size_t __unused_mc = 0;
1149
- CA_SLAB_REDUCE_SUM8_EX(int16_t, double, st, p, m, M2, 0.0, __variance_i16_P2EXPR, __unused_mc);
1150
- op[out_i++] = (double)(M2 / (double)(n_valid - 1));
1149
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int16_t, double, st, p, m, M2, 0.0, __variance_i16_P2EXPR, __unused_mc);
1150
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid - 1));
1151
1151
  }
1152
1152
  }
1153
1153
  ca_iter_state_finish(&st);
@@ -1172,7 +1172,7 @@ variance_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1172
1172
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
1173
1173
  CArray *co;
1174
1174
  GetCArray(vout, co);
1175
- double *op = (double *) co->ptr;
1175
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
1176
1176
  ca_iter_state st;
1177
1177
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
1178
1178
  slab_axes, naxes, 0);
@@ -1188,7 +1188,7 @@ variance_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1188
1188
  /* Pass 1: sum = Σx (+ masked_cnt) */
1189
1189
  double sum = 0.0;
1190
1190
  ca_size_t masked_cnt = 0;
1191
- CA_SLAB_REDUCE_SUM8_EX(uint16_t, double, st, p, m, sum, 0.0, __variance_u16_P1EXPR, masked_cnt);
1191
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint16_t, double, st, p, m, sum, 0.0, __variance_u16_P1EXPR, masked_cnt);
1192
1192
  ca_size_t n_valid = st.slab_elements - masked_cnt;
1193
1193
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
1194
1194
  if ( __trigger ) {
@@ -1197,14 +1197,14 @@ variance_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1197
1197
  op_mask = (boolean8_t *) co->mask->ptr;
1198
1198
  }
1199
1199
  op_mask[out_i] = 1;
1200
- op[out_i++] = (double) 0.0;
1200
+ op[out_i++] = (ca_u_float64_t) 0;
1201
1201
  } else {
1202
1202
  double mean = sum / (double) n_valid;
1203
1203
  /* Pass 2: M2 = Σ (x - mean)² */
1204
1204
  double M2 = 0.0;
1205
1205
  ca_size_t __unused_mc = 0;
1206
- CA_SLAB_REDUCE_SUM8_EX(uint16_t, double, st, p, m, M2, 0.0, __variance_u16_P2EXPR, __unused_mc);
1207
- op[out_i++] = (double)(M2 / (double)(n_valid - 1));
1206
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint16_t, double, st, p, m, M2, 0.0, __variance_u16_P2EXPR, __unused_mc);
1207
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid - 1));
1208
1208
  }
1209
1209
  }
1210
1210
  ca_iter_state_finish(&st);
@@ -1229,7 +1229,7 @@ variance_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1229
1229
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
1230
1230
  CArray *co;
1231
1231
  GetCArray(vout, co);
1232
- double *op = (double *) co->ptr;
1232
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
1233
1233
  ca_iter_state st;
1234
1234
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
1235
1235
  slab_axes, naxes, 0);
@@ -1245,7 +1245,7 @@ variance_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1245
1245
  /* Pass 1: sum = Σx (+ masked_cnt) */
1246
1246
  double sum = 0.0;
1247
1247
  ca_size_t masked_cnt = 0;
1248
- CA_SLAB_REDUCE_SUM8_EX(int32_t, double, st, p, m, sum, 0.0, __variance_i32_P1EXPR, masked_cnt);
1248
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int32_t, double, st, p, m, sum, 0.0, __variance_i32_P1EXPR, masked_cnt);
1249
1249
  ca_size_t n_valid = st.slab_elements - masked_cnt;
1250
1250
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
1251
1251
  if ( __trigger ) {
@@ -1254,14 +1254,14 @@ variance_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1254
1254
  op_mask = (boolean8_t *) co->mask->ptr;
1255
1255
  }
1256
1256
  op_mask[out_i] = 1;
1257
- op[out_i++] = (double) 0.0;
1257
+ op[out_i++] = (ca_u_float64_t) 0;
1258
1258
  } else {
1259
1259
  double mean = sum / (double) n_valid;
1260
1260
  /* Pass 2: M2 = Σ (x - mean)² */
1261
1261
  double M2 = 0.0;
1262
1262
  ca_size_t __unused_mc = 0;
1263
- CA_SLAB_REDUCE_SUM8_EX(int32_t, double, st, p, m, M2, 0.0, __variance_i32_P2EXPR, __unused_mc);
1264
- op[out_i++] = (double)(M2 / (double)(n_valid - 1));
1263
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int32_t, double, st, p, m, M2, 0.0, __variance_i32_P2EXPR, __unused_mc);
1264
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid - 1));
1265
1265
  }
1266
1266
  }
1267
1267
  ca_iter_state_finish(&st);
@@ -1286,7 +1286,7 @@ variance_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1286
1286
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
1287
1287
  CArray *co;
1288
1288
  GetCArray(vout, co);
1289
- double *op = (double *) co->ptr;
1289
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
1290
1290
  ca_iter_state st;
1291
1291
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
1292
1292
  slab_axes, naxes, 0);
@@ -1302,7 +1302,7 @@ variance_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1302
1302
  /* Pass 1: sum = Σx (+ masked_cnt) */
1303
1303
  double sum = 0.0;
1304
1304
  ca_size_t masked_cnt = 0;
1305
- CA_SLAB_REDUCE_SUM8_EX(uint32_t, double, st, p, m, sum, 0.0, __variance_u32_P1EXPR, masked_cnt);
1305
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint32_t, double, st, p, m, sum, 0.0, __variance_u32_P1EXPR, masked_cnt);
1306
1306
  ca_size_t n_valid = st.slab_elements - masked_cnt;
1307
1307
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
1308
1308
  if ( __trigger ) {
@@ -1311,14 +1311,14 @@ variance_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1311
1311
  op_mask = (boolean8_t *) co->mask->ptr;
1312
1312
  }
1313
1313
  op_mask[out_i] = 1;
1314
- op[out_i++] = (double) 0.0;
1314
+ op[out_i++] = (ca_u_float64_t) 0;
1315
1315
  } else {
1316
1316
  double mean = sum / (double) n_valid;
1317
1317
  /* Pass 2: M2 = Σ (x - mean)² */
1318
1318
  double M2 = 0.0;
1319
1319
  ca_size_t __unused_mc = 0;
1320
- CA_SLAB_REDUCE_SUM8_EX(uint32_t, double, st, p, m, M2, 0.0, __variance_u32_P2EXPR, __unused_mc);
1321
- op[out_i++] = (double)(M2 / (double)(n_valid - 1));
1320
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint32_t, double, st, p, m, M2, 0.0, __variance_u32_P2EXPR, __unused_mc);
1321
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid - 1));
1322
1322
  }
1323
1323
  }
1324
1324
  ca_iter_state_finish(&st);
@@ -1343,7 +1343,7 @@ variance_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1343
1343
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
1344
1344
  CArray *co;
1345
1345
  GetCArray(vout, co);
1346
- double *op = (double *) co->ptr;
1346
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
1347
1347
  ca_iter_state st;
1348
1348
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
1349
1349
  slab_axes, naxes, 0);
@@ -1359,7 +1359,7 @@ variance_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1359
1359
  /* Pass 1: sum = Σx (+ masked_cnt) */
1360
1360
  double sum = 0.0;
1361
1361
  ca_size_t masked_cnt = 0;
1362
- CA_SLAB_REDUCE_SUM8_EX(int64_t, double, st, p, m, sum, 0.0, __variance_i64_P1EXPR, masked_cnt);
1362
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int64_t, double, st, p, m, sum, 0.0, __variance_i64_P1EXPR, masked_cnt);
1363
1363
  ca_size_t n_valid = st.slab_elements - masked_cnt;
1364
1364
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
1365
1365
  if ( __trigger ) {
@@ -1368,14 +1368,14 @@ variance_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1368
1368
  op_mask = (boolean8_t *) co->mask->ptr;
1369
1369
  }
1370
1370
  op_mask[out_i] = 1;
1371
- op[out_i++] = (double) 0.0;
1371
+ op[out_i++] = (ca_u_float64_t) 0;
1372
1372
  } else {
1373
1373
  double mean = sum / (double) n_valid;
1374
1374
  /* Pass 2: M2 = Σ (x - mean)² */
1375
1375
  double M2 = 0.0;
1376
1376
  ca_size_t __unused_mc = 0;
1377
- CA_SLAB_REDUCE_SUM8_EX(int64_t, double, st, p, m, M2, 0.0, __variance_i64_P2EXPR, __unused_mc);
1378
- op[out_i++] = (double)(M2 / (double)(n_valid - 1));
1377
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int64_t, double, st, p, m, M2, 0.0, __variance_i64_P2EXPR, __unused_mc);
1378
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid - 1));
1379
1379
  }
1380
1380
  }
1381
1381
  ca_iter_state_finish(&st);
@@ -1400,7 +1400,7 @@ variance_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1400
1400
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
1401
1401
  CArray *co;
1402
1402
  GetCArray(vout, co);
1403
- double *op = (double *) co->ptr;
1403
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
1404
1404
  ca_iter_state st;
1405
1405
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
1406
1406
  slab_axes, naxes, 0);
@@ -1416,7 +1416,7 @@ variance_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1416
1416
  /* Pass 1: sum = Σx (+ masked_cnt) */
1417
1417
  double sum = 0.0;
1418
1418
  ca_size_t masked_cnt = 0;
1419
- CA_SLAB_REDUCE_SUM8_EX(uint64_t, double, st, p, m, sum, 0.0, __variance_u64_P1EXPR, masked_cnt);
1419
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint64_t, double, st, p, m, sum, 0.0, __variance_u64_P1EXPR, masked_cnt);
1420
1420
  ca_size_t n_valid = st.slab_elements - masked_cnt;
1421
1421
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
1422
1422
  if ( __trigger ) {
@@ -1425,14 +1425,14 @@ variance_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1425
1425
  op_mask = (boolean8_t *) co->mask->ptr;
1426
1426
  }
1427
1427
  op_mask[out_i] = 1;
1428
- op[out_i++] = (double) 0.0;
1428
+ op[out_i++] = (ca_u_float64_t) 0;
1429
1429
  } else {
1430
1430
  double mean = sum / (double) n_valid;
1431
1431
  /* Pass 2: M2 = Σ (x - mean)² */
1432
1432
  double M2 = 0.0;
1433
1433
  ca_size_t __unused_mc = 0;
1434
- CA_SLAB_REDUCE_SUM8_EX(uint64_t, double, st, p, m, M2, 0.0, __variance_u64_P2EXPR, __unused_mc);
1435
- op[out_i++] = (double)(M2 / (double)(n_valid - 1));
1434
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint64_t, double, st, p, m, M2, 0.0, __variance_u64_P2EXPR, __unused_mc);
1435
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid - 1));
1436
1436
  }
1437
1437
  }
1438
1438
  ca_iter_state_finish(&st);
@@ -1457,7 +1457,7 @@ variance_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1457
1457
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
1458
1458
  CArray *co;
1459
1459
  GetCArray(vout, co);
1460
- double *op = (double *) co->ptr;
1460
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
1461
1461
  ca_iter_state st;
1462
1462
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
1463
1463
  slab_axes, naxes, 0);
@@ -1473,7 +1473,7 @@ variance_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1473
1473
  /* Pass 1: sum = Σx (+ masked_cnt) */
1474
1474
  double sum = 0.0;
1475
1475
  ca_size_t masked_cnt = 0;
1476
- CA_SLAB_REDUCE_SUM8_EX(float, double, st, p, m, sum, 0.0, __variance_f32_P1EXPR, masked_cnt);
1476
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_float32_t, double, st, p, m, sum, 0.0, __variance_f32_P1EXPR, masked_cnt);
1477
1477
  ca_size_t n_valid = st.slab_elements - masked_cnt;
1478
1478
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
1479
1479
  if ( __trigger ) {
@@ -1482,14 +1482,14 @@ variance_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1482
1482
  op_mask = (boolean8_t *) co->mask->ptr;
1483
1483
  }
1484
1484
  op_mask[out_i] = 1;
1485
- op[out_i++] = (double) 0.0;
1485
+ op[out_i++] = (ca_u_float64_t) 0;
1486
1486
  } else {
1487
1487
  double mean = sum / (double) n_valid;
1488
1488
  /* Pass 2: M2 = Σ (x - mean)² */
1489
1489
  double M2 = 0.0;
1490
1490
  ca_size_t __unused_mc = 0;
1491
- CA_SLAB_REDUCE_SUM8_EX(float, double, st, p, m, M2, 0.0, __variance_f32_P2EXPR, __unused_mc);
1492
- op[out_i++] = (double)(M2 / (double)(n_valid - 1));
1491
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_float32_t, double, st, p, m, M2, 0.0, __variance_f32_P2EXPR, __unused_mc);
1492
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid - 1));
1493
1493
  }
1494
1494
  }
1495
1495
  ca_iter_state_finish(&st);
@@ -1514,7 +1514,7 @@ variance_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1514
1514
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
1515
1515
  CArray *co;
1516
1516
  GetCArray(vout, co);
1517
- double *op = (double *) co->ptr;
1517
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
1518
1518
  ca_iter_state st;
1519
1519
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
1520
1520
  slab_axes, naxes, 0);
@@ -1530,7 +1530,7 @@ variance_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1530
1530
  /* Pass 1: sum = Σx (+ masked_cnt) */
1531
1531
  double sum = 0.0;
1532
1532
  ca_size_t masked_cnt = 0;
1533
- CA_SLAB_REDUCE_SUM8_EX(double, double, st, p, m, sum, 0.0, __variance_f64_P1EXPR, masked_cnt);
1533
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_float64_t, double, st, p, m, sum, 0.0, __variance_f64_P1EXPR, masked_cnt);
1534
1534
  ca_size_t n_valid = st.slab_elements - masked_cnt;
1535
1535
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
1536
1536
  if ( __trigger ) {
@@ -1539,14 +1539,14 @@ variance_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
1539
1539
  op_mask = (boolean8_t *) co->mask->ptr;
1540
1540
  }
1541
1541
  op_mask[out_i] = 1;
1542
- op[out_i++] = (double) 0.0;
1542
+ op[out_i++] = (ca_u_float64_t) 0;
1543
1543
  } else {
1544
1544
  double mean = sum / (double) n_valid;
1545
1545
  /* Pass 2: M2 = Σ (x - mean)² */
1546
1546
  double M2 = 0.0;
1547
1547
  ca_size_t __unused_mc = 0;
1548
- CA_SLAB_REDUCE_SUM8_EX(double, double, st, p, m, M2, 0.0, __variance_f64_P2EXPR, __unused_mc);
1549
- op[out_i++] = (double)(M2 / (double)(n_valid - 1));
1548
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_float64_t, double, st, p, m, M2, 0.0, __variance_f64_P2EXPR, __unused_mc);
1549
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid - 1));
1550
1550
  }
1551
1551
  }
1552
1552
  ca_iter_state_finish(&st);
@@ -1571,7 +1571,7 @@ variance_ki_native_cmplx64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t na
1571
1571
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
1572
1572
  CArray *co;
1573
1573
  GetCArray(vout, co);
1574
- double *op = (double *) co->ptr;
1574
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
1575
1575
  ca_iter_state st;
1576
1576
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
1577
1577
  slab_axes, naxes, 0);
@@ -1585,9 +1585,9 @@ variance_ki_native_cmplx64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t na
1585
1585
  boolean8_t *op_mask = NULL; /* lazily allocated on first UNDEF */
1586
1586
  while ( ca_iter_state_next_slab_axes(&st, &p, &m) ) {
1587
1587
  /* Pass 1: sum = Σx (+ masked_cnt) */
1588
- cmplx64_t sum = 0;
1588
+ ca_u_cmplx64_t sum = 0;
1589
1589
  ca_size_t masked_cnt = 0;
1590
- CA_SLAB_REDUCE_SUM8_EX(cmplx64_t, cmplx64_t, st, p, m, sum, 0, __variance_cmplx64_P1EXPR, masked_cnt);
1590
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_cmplx64_t, ca_u_cmplx64_t, st, p, m, sum, 0, __variance_cmplx64_P1EXPR, masked_cnt);
1591
1591
  ca_size_t n_valid = st.slab_elements - masked_cnt;
1592
1592
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
1593
1593
  if ( __trigger ) {
@@ -1596,14 +1596,14 @@ variance_ki_native_cmplx64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t na
1596
1596
  op_mask = (boolean8_t *) co->mask->ptr;
1597
1597
  }
1598
1598
  op_mask[out_i] = 1;
1599
- op[out_i++] = (double) 0.0;
1599
+ op[out_i++] = (ca_u_float64_t) 0;
1600
1600
  } else {
1601
- cmplx64_t mean = sum / (cmplx64_t)(double) n_valid;
1601
+ ca_u_cmplx64_t mean = sum / (ca_u_cmplx64_t)(double) n_valid;
1602
1602
  /* Pass 2: M2 = Σ (x - mean)² */
1603
1603
  double M2 = 0.0;
1604
1604
  ca_size_t __unused_mc = 0;
1605
- CA_SLAB_REDUCE_SUM8_EX(cmplx64_t, double, st, p, m, M2, 0.0, __variance_cmplx64_P2EXPR, __unused_mc);
1606
- op[out_i++] = (double)(M2 / (double)(n_valid - 1));
1605
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_cmplx64_t, double, st, p, m, M2, 0.0, __variance_cmplx64_P2EXPR, __unused_mc);
1606
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid - 1));
1607
1607
  }
1608
1608
  }
1609
1609
  ca_iter_state_finish(&st);
@@ -1628,7 +1628,7 @@ variance_ki_native_cmplx128 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t n
1628
1628
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
1629
1629
  CArray *co;
1630
1630
  GetCArray(vout, co);
1631
- double *op = (double *) co->ptr;
1631
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
1632
1632
  ca_iter_state st;
1633
1633
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
1634
1634
  slab_axes, naxes, 0);
@@ -1642,9 +1642,9 @@ variance_ki_native_cmplx128 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t n
1642
1642
  boolean8_t *op_mask = NULL; /* lazily allocated on first UNDEF */
1643
1643
  while ( ca_iter_state_next_slab_axes(&st, &p, &m) ) {
1644
1644
  /* Pass 1: sum = Σx (+ masked_cnt) */
1645
- cmplx128_t sum = 0;
1645
+ ca_u_cmplx128_t sum = 0;
1646
1646
  ca_size_t masked_cnt = 0;
1647
- CA_SLAB_REDUCE_SUM8_EX(cmplx128_t, cmplx128_t, st, p, m, sum, 0, __variance_cmplx128_P1EXPR, masked_cnt);
1647
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_cmplx128_t, ca_u_cmplx128_t, st, p, m, sum, 0, __variance_cmplx128_P1EXPR, masked_cnt);
1648
1648
  ca_size_t n_valid = st.slab_elements - masked_cnt;
1649
1649
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
1650
1650
  if ( __trigger ) {
@@ -1653,14 +1653,14 @@ variance_ki_native_cmplx128 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t n
1653
1653
  op_mask = (boolean8_t *) co->mask->ptr;
1654
1654
  }
1655
1655
  op_mask[out_i] = 1;
1656
- op[out_i++] = (double) 0.0;
1656
+ op[out_i++] = (ca_u_float64_t) 0;
1657
1657
  } else {
1658
- cmplx128_t mean = sum / (cmplx128_t)(double) n_valid;
1658
+ ca_u_cmplx128_t mean = sum / (ca_u_cmplx128_t)(double) n_valid;
1659
1659
  /* Pass 2: M2 = Σ (x - mean)² */
1660
1660
  double M2 = 0.0;
1661
1661
  ca_size_t __unused_mc = 0;
1662
- CA_SLAB_REDUCE_SUM8_EX(cmplx128_t, double, st, p, m, M2, 0.0, __variance_cmplx128_P2EXPR, __unused_mc);
1663
- op[out_i++] = (double)(M2 / (double)(n_valid - 1));
1662
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_cmplx128_t, double, st, p, m, M2, 0.0, __variance_cmplx128_P2EXPR, __unused_mc);
1663
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid - 1));
1664
1664
  }
1665
1665
  }
1666
1666
  ca_iter_state_finish(&st);
@@ -1685,7 +1685,7 @@ variance_ki_native_bool (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
1685
1685
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
1686
1686
  CArray *co;
1687
1687
  GetCArray(vout, co);
1688
- double *op = (double *) co->ptr;
1688
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
1689
1689
  ca_iter_state st;
1690
1690
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
1691
1691
  slab_axes, naxes, 0);
@@ -1710,14 +1710,14 @@ variance_ki_native_bool (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes
1710
1710
  op_mask = (boolean8_t *) co->mask->ptr;
1711
1711
  }
1712
1712
  op_mask[out_i] = 1;
1713
- op[out_i++] = (double) 0.0;
1713
+ op[out_i++] = (ca_u_float64_t) 0;
1714
1714
  } else {
1715
1715
  double mean = sum / (double) n_valid;
1716
1716
  /* Pass 2: M2 = Σ (x - mean)² */
1717
1717
  double M2 = 0.0;
1718
1718
  ca_size_t __unused_mc = 0;
1719
1719
  CA_SLAB_REDUCE_SUM8_EX(boolean8_t, double, st, p, m, M2, 0.0, __variance_bool_P2EXPR, __unused_mc);
1720
- op[out_i++] = (double)(M2 / (double)(n_valid - 1));
1720
+ op[out_i++] = (ca_u_float64_t)(M2 / (double)(n_valid - 1));
1721
1721
  }
1722
1722
  }
1723
1723
  ca_iter_state_finish(&st);
@@ -1949,7 +1949,7 @@ stddevp_ki_native_i8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
1949
1949
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
1950
1950
  CArray *co;
1951
1951
  GetCArray(vout, co);
1952
- double *op = (double *) co->ptr;
1952
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
1953
1953
  ca_iter_state st;
1954
1954
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
1955
1955
  slab_axes, naxes, 0);
@@ -1974,14 +1974,14 @@ stddevp_ki_native_i8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
1974
1974
  op_mask = (boolean8_t *) co->mask->ptr;
1975
1975
  }
1976
1976
  op_mask[out_i] = 1;
1977
- op[out_i++] = (double) 0.0;
1977
+ op[out_i++] = (ca_u_float64_t) 0;
1978
1978
  } else {
1979
1979
  double mean = sum / (double) n_valid;
1980
1980
  /* Pass 2: M2 = Σ (x - mean)² */
1981
1981
  double M2 = 0.0;
1982
1982
  ca_size_t __unused_mc = 0;
1983
1983
  CA_SLAB_REDUCE_SUM8_EX(int8_t, double, st, p, m, M2, 0.0, __stddevp_i8_P2EXPR, __unused_mc);
1984
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid)));
1984
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid)));
1985
1985
  }
1986
1986
  }
1987
1987
  ca_iter_state_finish(&st);
@@ -2006,7 +2006,7 @@ stddevp_ki_native_u8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
2006
2006
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
2007
2007
  CArray *co;
2008
2008
  GetCArray(vout, co);
2009
- double *op = (double *) co->ptr;
2009
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
2010
2010
  ca_iter_state st;
2011
2011
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
2012
2012
  slab_axes, naxes, 0);
@@ -2031,14 +2031,14 @@ stddevp_ki_native_u8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
2031
2031
  op_mask = (boolean8_t *) co->mask->ptr;
2032
2032
  }
2033
2033
  op_mask[out_i] = 1;
2034
- op[out_i++] = (double) 0.0;
2034
+ op[out_i++] = (ca_u_float64_t) 0;
2035
2035
  } else {
2036
2036
  double mean = sum / (double) n_valid;
2037
2037
  /* Pass 2: M2 = Σ (x - mean)² */
2038
2038
  double M2 = 0.0;
2039
2039
  ca_size_t __unused_mc = 0;
2040
2040
  CA_SLAB_REDUCE_SUM8_EX(uint8_t, double, st, p, m, M2, 0.0, __stddevp_u8_P2EXPR, __unused_mc);
2041
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2041
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2042
2042
  }
2043
2043
  }
2044
2044
  ca_iter_state_finish(&st);
@@ -2063,7 +2063,7 @@ stddevp_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2063
2063
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
2064
2064
  CArray *co;
2065
2065
  GetCArray(vout, co);
2066
- double *op = (double *) co->ptr;
2066
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
2067
2067
  ca_iter_state st;
2068
2068
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
2069
2069
  slab_axes, naxes, 0);
@@ -2079,7 +2079,7 @@ stddevp_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2079
2079
  /* Pass 1: sum = Σx (+ masked_cnt) */
2080
2080
  double sum = 0.0;
2081
2081
  ca_size_t masked_cnt = 0;
2082
- CA_SLAB_REDUCE_SUM8_EX(int16_t, double, st, p, m, sum, 0.0, __stddevp_i16_P1EXPR, masked_cnt);
2082
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int16_t, double, st, p, m, sum, 0.0, __stddevp_i16_P1EXPR, masked_cnt);
2083
2083
  ca_size_t n_valid = st.slab_elements - masked_cnt;
2084
2084
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
2085
2085
  if ( __trigger ) {
@@ -2088,14 +2088,14 @@ stddevp_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2088
2088
  op_mask = (boolean8_t *) co->mask->ptr;
2089
2089
  }
2090
2090
  op_mask[out_i] = 1;
2091
- op[out_i++] = (double) 0.0;
2091
+ op[out_i++] = (ca_u_float64_t) 0;
2092
2092
  } else {
2093
2093
  double mean = sum / (double) n_valid;
2094
2094
  /* Pass 2: M2 = Σ (x - mean)² */
2095
2095
  double M2 = 0.0;
2096
2096
  ca_size_t __unused_mc = 0;
2097
- CA_SLAB_REDUCE_SUM8_EX(int16_t, double, st, p, m, M2, 0.0, __stddevp_i16_P2EXPR, __unused_mc);
2098
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2097
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int16_t, double, st, p, m, M2, 0.0, __stddevp_i16_P2EXPR, __unused_mc);
2098
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2099
2099
  }
2100
2100
  }
2101
2101
  ca_iter_state_finish(&st);
@@ -2120,7 +2120,7 @@ stddevp_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2120
2120
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
2121
2121
  CArray *co;
2122
2122
  GetCArray(vout, co);
2123
- double *op = (double *) co->ptr;
2123
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
2124
2124
  ca_iter_state st;
2125
2125
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
2126
2126
  slab_axes, naxes, 0);
@@ -2136,7 +2136,7 @@ stddevp_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2136
2136
  /* Pass 1: sum = Σx (+ masked_cnt) */
2137
2137
  double sum = 0.0;
2138
2138
  ca_size_t masked_cnt = 0;
2139
- CA_SLAB_REDUCE_SUM8_EX(uint16_t, double, st, p, m, sum, 0.0, __stddevp_u16_P1EXPR, masked_cnt);
2139
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint16_t, double, st, p, m, sum, 0.0, __stddevp_u16_P1EXPR, masked_cnt);
2140
2140
  ca_size_t n_valid = st.slab_elements - masked_cnt;
2141
2141
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
2142
2142
  if ( __trigger ) {
@@ -2145,14 +2145,14 @@ stddevp_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2145
2145
  op_mask = (boolean8_t *) co->mask->ptr;
2146
2146
  }
2147
2147
  op_mask[out_i] = 1;
2148
- op[out_i++] = (double) 0.0;
2148
+ op[out_i++] = (ca_u_float64_t) 0;
2149
2149
  } else {
2150
2150
  double mean = sum / (double) n_valid;
2151
2151
  /* Pass 2: M2 = Σ (x - mean)² */
2152
2152
  double M2 = 0.0;
2153
2153
  ca_size_t __unused_mc = 0;
2154
- CA_SLAB_REDUCE_SUM8_EX(uint16_t, double, st, p, m, M2, 0.0, __stddevp_u16_P2EXPR, __unused_mc);
2155
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2154
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint16_t, double, st, p, m, M2, 0.0, __stddevp_u16_P2EXPR, __unused_mc);
2155
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2156
2156
  }
2157
2157
  }
2158
2158
  ca_iter_state_finish(&st);
@@ -2177,7 +2177,7 @@ stddevp_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2177
2177
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
2178
2178
  CArray *co;
2179
2179
  GetCArray(vout, co);
2180
- double *op = (double *) co->ptr;
2180
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
2181
2181
  ca_iter_state st;
2182
2182
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
2183
2183
  slab_axes, naxes, 0);
@@ -2193,7 +2193,7 @@ stddevp_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2193
2193
  /* Pass 1: sum = Σx (+ masked_cnt) */
2194
2194
  double sum = 0.0;
2195
2195
  ca_size_t masked_cnt = 0;
2196
- CA_SLAB_REDUCE_SUM8_EX(int32_t, double, st, p, m, sum, 0.0, __stddevp_i32_P1EXPR, masked_cnt);
2196
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int32_t, double, st, p, m, sum, 0.0, __stddevp_i32_P1EXPR, masked_cnt);
2197
2197
  ca_size_t n_valid = st.slab_elements - masked_cnt;
2198
2198
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
2199
2199
  if ( __trigger ) {
@@ -2202,14 +2202,14 @@ stddevp_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2202
2202
  op_mask = (boolean8_t *) co->mask->ptr;
2203
2203
  }
2204
2204
  op_mask[out_i] = 1;
2205
- op[out_i++] = (double) 0.0;
2205
+ op[out_i++] = (ca_u_float64_t) 0;
2206
2206
  } else {
2207
2207
  double mean = sum / (double) n_valid;
2208
2208
  /* Pass 2: M2 = Σ (x - mean)² */
2209
2209
  double M2 = 0.0;
2210
2210
  ca_size_t __unused_mc = 0;
2211
- CA_SLAB_REDUCE_SUM8_EX(int32_t, double, st, p, m, M2, 0.0, __stddevp_i32_P2EXPR, __unused_mc);
2212
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2211
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int32_t, double, st, p, m, M2, 0.0, __stddevp_i32_P2EXPR, __unused_mc);
2212
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2213
2213
  }
2214
2214
  }
2215
2215
  ca_iter_state_finish(&st);
@@ -2234,7 +2234,7 @@ stddevp_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2234
2234
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
2235
2235
  CArray *co;
2236
2236
  GetCArray(vout, co);
2237
- double *op = (double *) co->ptr;
2237
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
2238
2238
  ca_iter_state st;
2239
2239
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
2240
2240
  slab_axes, naxes, 0);
@@ -2250,7 +2250,7 @@ stddevp_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2250
2250
  /* Pass 1: sum = Σx (+ masked_cnt) */
2251
2251
  double sum = 0.0;
2252
2252
  ca_size_t masked_cnt = 0;
2253
- CA_SLAB_REDUCE_SUM8_EX(uint32_t, double, st, p, m, sum, 0.0, __stddevp_u32_P1EXPR, masked_cnt);
2253
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint32_t, double, st, p, m, sum, 0.0, __stddevp_u32_P1EXPR, masked_cnt);
2254
2254
  ca_size_t n_valid = st.slab_elements - masked_cnt;
2255
2255
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
2256
2256
  if ( __trigger ) {
@@ -2259,14 +2259,14 @@ stddevp_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2259
2259
  op_mask = (boolean8_t *) co->mask->ptr;
2260
2260
  }
2261
2261
  op_mask[out_i] = 1;
2262
- op[out_i++] = (double) 0.0;
2262
+ op[out_i++] = (ca_u_float64_t) 0;
2263
2263
  } else {
2264
2264
  double mean = sum / (double) n_valid;
2265
2265
  /* Pass 2: M2 = Σ (x - mean)² */
2266
2266
  double M2 = 0.0;
2267
2267
  ca_size_t __unused_mc = 0;
2268
- CA_SLAB_REDUCE_SUM8_EX(uint32_t, double, st, p, m, M2, 0.0, __stddevp_u32_P2EXPR, __unused_mc);
2269
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2268
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint32_t, double, st, p, m, M2, 0.0, __stddevp_u32_P2EXPR, __unused_mc);
2269
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2270
2270
  }
2271
2271
  }
2272
2272
  ca_iter_state_finish(&st);
@@ -2291,7 +2291,7 @@ stddevp_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2291
2291
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
2292
2292
  CArray *co;
2293
2293
  GetCArray(vout, co);
2294
- double *op = (double *) co->ptr;
2294
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
2295
2295
  ca_iter_state st;
2296
2296
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
2297
2297
  slab_axes, naxes, 0);
@@ -2307,7 +2307,7 @@ stddevp_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2307
2307
  /* Pass 1: sum = Σx (+ masked_cnt) */
2308
2308
  double sum = 0.0;
2309
2309
  ca_size_t masked_cnt = 0;
2310
- CA_SLAB_REDUCE_SUM8_EX(int64_t, double, st, p, m, sum, 0.0, __stddevp_i64_P1EXPR, masked_cnt);
2310
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int64_t, double, st, p, m, sum, 0.0, __stddevp_i64_P1EXPR, masked_cnt);
2311
2311
  ca_size_t n_valid = st.slab_elements - masked_cnt;
2312
2312
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
2313
2313
  if ( __trigger ) {
@@ -2316,14 +2316,14 @@ stddevp_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2316
2316
  op_mask = (boolean8_t *) co->mask->ptr;
2317
2317
  }
2318
2318
  op_mask[out_i] = 1;
2319
- op[out_i++] = (double) 0.0;
2319
+ op[out_i++] = (ca_u_float64_t) 0;
2320
2320
  } else {
2321
2321
  double mean = sum / (double) n_valid;
2322
2322
  /* Pass 2: M2 = Σ (x - mean)² */
2323
2323
  double M2 = 0.0;
2324
2324
  ca_size_t __unused_mc = 0;
2325
- CA_SLAB_REDUCE_SUM8_EX(int64_t, double, st, p, m, M2, 0.0, __stddevp_i64_P2EXPR, __unused_mc);
2326
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2325
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int64_t, double, st, p, m, M2, 0.0, __stddevp_i64_P2EXPR, __unused_mc);
2326
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2327
2327
  }
2328
2328
  }
2329
2329
  ca_iter_state_finish(&st);
@@ -2348,7 +2348,7 @@ stddevp_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2348
2348
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
2349
2349
  CArray *co;
2350
2350
  GetCArray(vout, co);
2351
- double *op = (double *) co->ptr;
2351
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
2352
2352
  ca_iter_state st;
2353
2353
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
2354
2354
  slab_axes, naxes, 0);
@@ -2364,7 +2364,7 @@ stddevp_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2364
2364
  /* Pass 1: sum = Σx (+ masked_cnt) */
2365
2365
  double sum = 0.0;
2366
2366
  ca_size_t masked_cnt = 0;
2367
- CA_SLAB_REDUCE_SUM8_EX(uint64_t, double, st, p, m, sum, 0.0, __stddevp_u64_P1EXPR, masked_cnt);
2367
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint64_t, double, st, p, m, sum, 0.0, __stddevp_u64_P1EXPR, masked_cnt);
2368
2368
  ca_size_t n_valid = st.slab_elements - masked_cnt;
2369
2369
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
2370
2370
  if ( __trigger ) {
@@ -2373,14 +2373,14 @@ stddevp_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2373
2373
  op_mask = (boolean8_t *) co->mask->ptr;
2374
2374
  }
2375
2375
  op_mask[out_i] = 1;
2376
- op[out_i++] = (double) 0.0;
2376
+ op[out_i++] = (ca_u_float64_t) 0;
2377
2377
  } else {
2378
2378
  double mean = sum / (double) n_valid;
2379
2379
  /* Pass 2: M2 = Σ (x - mean)² */
2380
2380
  double M2 = 0.0;
2381
2381
  ca_size_t __unused_mc = 0;
2382
- CA_SLAB_REDUCE_SUM8_EX(uint64_t, double, st, p, m, M2, 0.0, __stddevp_u64_P2EXPR, __unused_mc);
2383
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2382
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint64_t, double, st, p, m, M2, 0.0, __stddevp_u64_P2EXPR, __unused_mc);
2383
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2384
2384
  }
2385
2385
  }
2386
2386
  ca_iter_state_finish(&st);
@@ -2405,7 +2405,7 @@ stddevp_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2405
2405
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
2406
2406
  CArray *co;
2407
2407
  GetCArray(vout, co);
2408
- double *op = (double *) co->ptr;
2408
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
2409
2409
  ca_iter_state st;
2410
2410
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
2411
2411
  slab_axes, naxes, 0);
@@ -2421,7 +2421,7 @@ stddevp_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2421
2421
  /* Pass 1: sum = Σx (+ masked_cnt) */
2422
2422
  double sum = 0.0;
2423
2423
  ca_size_t masked_cnt = 0;
2424
- CA_SLAB_REDUCE_SUM8_EX(float, double, st, p, m, sum, 0.0, __stddevp_f32_P1EXPR, masked_cnt);
2424
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_float32_t, double, st, p, m, sum, 0.0, __stddevp_f32_P1EXPR, masked_cnt);
2425
2425
  ca_size_t n_valid = st.slab_elements - masked_cnt;
2426
2426
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
2427
2427
  if ( __trigger ) {
@@ -2430,14 +2430,14 @@ stddevp_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2430
2430
  op_mask = (boolean8_t *) co->mask->ptr;
2431
2431
  }
2432
2432
  op_mask[out_i] = 1;
2433
- op[out_i++] = (double) 0.0;
2433
+ op[out_i++] = (ca_u_float64_t) 0;
2434
2434
  } else {
2435
2435
  double mean = sum / (double) n_valid;
2436
2436
  /* Pass 2: M2 = Σ (x - mean)² */
2437
2437
  double M2 = 0.0;
2438
2438
  ca_size_t __unused_mc = 0;
2439
- CA_SLAB_REDUCE_SUM8_EX(float, double, st, p, m, M2, 0.0, __stddevp_f32_P2EXPR, __unused_mc);
2440
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2439
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_float32_t, double, st, p, m, M2, 0.0, __stddevp_f32_P2EXPR, __unused_mc);
2440
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2441
2441
  }
2442
2442
  }
2443
2443
  ca_iter_state_finish(&st);
@@ -2462,7 +2462,7 @@ stddevp_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2462
2462
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
2463
2463
  CArray *co;
2464
2464
  GetCArray(vout, co);
2465
- double *op = (double *) co->ptr;
2465
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
2466
2466
  ca_iter_state st;
2467
2467
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
2468
2468
  slab_axes, naxes, 0);
@@ -2478,7 +2478,7 @@ stddevp_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2478
2478
  /* Pass 1: sum = Σx (+ masked_cnt) */
2479
2479
  double sum = 0.0;
2480
2480
  ca_size_t masked_cnt = 0;
2481
- CA_SLAB_REDUCE_SUM8_EX(double, double, st, p, m, sum, 0.0, __stddevp_f64_P1EXPR, masked_cnt);
2481
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_float64_t, double, st, p, m, sum, 0.0, __stddevp_f64_P1EXPR, masked_cnt);
2482
2482
  ca_size_t n_valid = st.slab_elements - masked_cnt;
2483
2483
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
2484
2484
  if ( __trigger ) {
@@ -2487,14 +2487,14 @@ stddevp_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2487
2487
  op_mask = (boolean8_t *) co->mask->ptr;
2488
2488
  }
2489
2489
  op_mask[out_i] = 1;
2490
- op[out_i++] = (double) 0.0;
2490
+ op[out_i++] = (ca_u_float64_t) 0;
2491
2491
  } else {
2492
2492
  double mean = sum / (double) n_valid;
2493
2493
  /* Pass 2: M2 = Σ (x - mean)² */
2494
2494
  double M2 = 0.0;
2495
2495
  ca_size_t __unused_mc = 0;
2496
- CA_SLAB_REDUCE_SUM8_EX(double, double, st, p, m, M2, 0.0, __stddevp_f64_P2EXPR, __unused_mc);
2497
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2496
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_float64_t, double, st, p, m, M2, 0.0, __stddevp_f64_P2EXPR, __unused_mc);
2497
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2498
2498
  }
2499
2499
  }
2500
2500
  ca_iter_state_finish(&st);
@@ -2519,7 +2519,7 @@ stddevp_ki_native_cmplx64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t nax
2519
2519
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
2520
2520
  CArray *co;
2521
2521
  GetCArray(vout, co);
2522
- double *op = (double *) co->ptr;
2522
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
2523
2523
  ca_iter_state st;
2524
2524
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
2525
2525
  slab_axes, naxes, 0);
@@ -2533,9 +2533,9 @@ stddevp_ki_native_cmplx64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t nax
2533
2533
  boolean8_t *op_mask = NULL; /* lazily allocated on first UNDEF */
2534
2534
  while ( ca_iter_state_next_slab_axes(&st, &p, &m) ) {
2535
2535
  /* Pass 1: sum = Σx (+ masked_cnt) */
2536
- cmplx64_t sum = 0;
2536
+ ca_u_cmplx64_t sum = 0;
2537
2537
  ca_size_t masked_cnt = 0;
2538
- CA_SLAB_REDUCE_SUM8_EX(cmplx64_t, cmplx64_t, st, p, m, sum, 0, __stddevp_cmplx64_P1EXPR, masked_cnt);
2538
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_cmplx64_t, ca_u_cmplx64_t, st, p, m, sum, 0, __stddevp_cmplx64_P1EXPR, masked_cnt);
2539
2539
  ca_size_t n_valid = st.slab_elements - masked_cnt;
2540
2540
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
2541
2541
  if ( __trigger ) {
@@ -2544,14 +2544,14 @@ stddevp_ki_native_cmplx64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t nax
2544
2544
  op_mask = (boolean8_t *) co->mask->ptr;
2545
2545
  }
2546
2546
  op_mask[out_i] = 1;
2547
- op[out_i++] = (double) 0.0;
2547
+ op[out_i++] = (ca_u_float64_t) 0;
2548
2548
  } else {
2549
- cmplx64_t mean = sum / (cmplx64_t)(double) n_valid;
2549
+ ca_u_cmplx64_t mean = sum / (ca_u_cmplx64_t)(double) n_valid;
2550
2550
  /* Pass 2: M2 = Σ (x - mean)² */
2551
2551
  double M2 = 0.0;
2552
2552
  ca_size_t __unused_mc = 0;
2553
- CA_SLAB_REDUCE_SUM8_EX(cmplx64_t, double, st, p, m, M2, 0.0, __stddevp_cmplx64_P2EXPR, __unused_mc);
2554
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2553
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_cmplx64_t, double, st, p, m, M2, 0.0, __stddevp_cmplx64_P2EXPR, __unused_mc);
2554
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2555
2555
  }
2556
2556
  }
2557
2557
  ca_iter_state_finish(&st);
@@ -2576,7 +2576,7 @@ stddevp_ki_native_cmplx128 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t na
2576
2576
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
2577
2577
  CArray *co;
2578
2578
  GetCArray(vout, co);
2579
- double *op = (double *) co->ptr;
2579
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
2580
2580
  ca_iter_state st;
2581
2581
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
2582
2582
  slab_axes, naxes, 0);
@@ -2590,9 +2590,9 @@ stddevp_ki_native_cmplx128 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t na
2590
2590
  boolean8_t *op_mask = NULL; /* lazily allocated on first UNDEF */
2591
2591
  while ( ca_iter_state_next_slab_axes(&st, &p, &m) ) {
2592
2592
  /* Pass 1: sum = Σx (+ masked_cnt) */
2593
- cmplx128_t sum = 0;
2593
+ ca_u_cmplx128_t sum = 0;
2594
2594
  ca_size_t masked_cnt = 0;
2595
- CA_SLAB_REDUCE_SUM8_EX(cmplx128_t, cmplx128_t, st, p, m, sum, 0, __stddevp_cmplx128_P1EXPR, masked_cnt);
2595
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_cmplx128_t, ca_u_cmplx128_t, st, p, m, sum, 0, __stddevp_cmplx128_P1EXPR, masked_cnt);
2596
2596
  ca_size_t n_valid = st.slab_elements - masked_cnt;
2597
2597
  int __trigger = ca_too_few_present(n_valid, min_count, 1);
2598
2598
  if ( __trigger ) {
@@ -2601,14 +2601,14 @@ stddevp_ki_native_cmplx128 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t na
2601
2601
  op_mask = (boolean8_t *) co->mask->ptr;
2602
2602
  }
2603
2603
  op_mask[out_i] = 1;
2604
- op[out_i++] = (double) 0.0;
2604
+ op[out_i++] = (ca_u_float64_t) 0;
2605
2605
  } else {
2606
- cmplx128_t mean = sum / (cmplx128_t)(double) n_valid;
2606
+ ca_u_cmplx128_t mean = sum / (ca_u_cmplx128_t)(double) n_valid;
2607
2607
  /* Pass 2: M2 = Σ (x - mean)² */
2608
2608
  double M2 = 0.0;
2609
2609
  ca_size_t __unused_mc = 0;
2610
- CA_SLAB_REDUCE_SUM8_EX(cmplx128_t, double, st, p, m, M2, 0.0, __stddevp_cmplx128_P2EXPR, __unused_mc);
2611
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2610
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_cmplx128_t, double, st, p, m, M2, 0.0, __stddevp_cmplx128_P2EXPR, __unused_mc);
2611
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2612
2612
  }
2613
2613
  }
2614
2614
  ca_iter_state_finish(&st);
@@ -2633,7 +2633,7 @@ stddevp_ki_native_bool (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2633
2633
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
2634
2634
  CArray *co;
2635
2635
  GetCArray(vout, co);
2636
- double *op = (double *) co->ptr;
2636
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
2637
2637
  ca_iter_state st;
2638
2638
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
2639
2639
  slab_axes, naxes, 0);
@@ -2658,14 +2658,14 @@ stddevp_ki_native_bool (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
2658
2658
  op_mask = (boolean8_t *) co->mask->ptr;
2659
2659
  }
2660
2660
  op_mask[out_i] = 1;
2661
- op[out_i++] = (double) 0.0;
2661
+ op[out_i++] = (ca_u_float64_t) 0;
2662
2662
  } else {
2663
2663
  double mean = sum / (double) n_valid;
2664
2664
  /* Pass 2: M2 = Σ (x - mean)² */
2665
2665
  double M2 = 0.0;
2666
2666
  ca_size_t __unused_mc = 0;
2667
2667
  CA_SLAB_REDUCE_SUM8_EX(boolean8_t, double, st, p, m, M2, 0.0, __stddevp_bool_P2EXPR, __unused_mc);
2668
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2668
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid)));
2669
2669
  }
2670
2670
  }
2671
2671
  ca_iter_state_finish(&st);
@@ -2715,7 +2715,7 @@ stddevp_ki_native_object_body (VALUE arg)
2715
2715
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
2716
2716
  CArray *co;
2717
2717
  GetCArray(vout, co);
2718
- double *op = (double *) co->ptr;
2718
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
2719
2719
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
2720
2720
  slab_axes, naxes, 0);
2721
2721
  if ( rc != CA_ITER_OK ) {
@@ -2739,7 +2739,7 @@ stddevp_ki_native_object_body (VALUE arg)
2739
2739
  op_mask = (boolean8_t *) co->mask->ptr;
2740
2740
  }
2741
2741
  op_mask[out_i] = 1;
2742
- op[out_i++] = (double) 0.0;
2742
+ op[out_i++] = (ca_u_float64_t) 0;
2743
2743
  } else {
2744
2744
  VALUE mean = rb_funcall(sum, rb_intern("/"), 1, LONG2NUM(n_valid));
2745
2745
  /* Pass 2: M2 = Σ (x - mean)² */
@@ -2747,7 +2747,7 @@ stddevp_ki_native_object_body (VALUE arg)
2747
2747
  ca_size_t __unused_mc = 0;
2748
2748
  CA_SLAB_REDUCE_T_EX(VALUE, st, p, m, M2, INT2FIX(0), VALUE __d = rb_funcall(v, rb_intern("-"), 1, mean);
2749
2749
  M2 = rb_funcall(M2, rb_intern("+"), 1, rb_funcall(__d, rb_intern("*"), 1, __d)), __unused_mc);
2750
- op[out_i++] = (double)(ca_sqrt_clamp(NUM2DBL(rb_funcall(M2, rb_intern("/"), 1, LONG2NUM(n_valid)))));
2750
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(NUM2DBL(rb_funcall(M2, rb_intern("/"), 1, LONG2NUM(n_valid)))));
2751
2751
  }
2752
2752
  }
2753
2753
  ca_iter_state_finish(&st);
@@ -2897,7 +2897,7 @@ stddev_ki_native_i8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, in
2897
2897
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
2898
2898
  CArray *co;
2899
2899
  GetCArray(vout, co);
2900
- double *op = (double *) co->ptr;
2900
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
2901
2901
  ca_iter_state st;
2902
2902
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
2903
2903
  slab_axes, naxes, 0);
@@ -2922,14 +2922,14 @@ stddev_ki_native_i8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, in
2922
2922
  op_mask = (boolean8_t *) co->mask->ptr;
2923
2923
  }
2924
2924
  op_mask[out_i] = 1;
2925
- op[out_i++] = (double) 0.0;
2925
+ op[out_i++] = (ca_u_float64_t) 0;
2926
2926
  } else {
2927
2927
  double mean = sum / (double) n_valid;
2928
2928
  /* Pass 2: M2 = Σ (x - mean)² */
2929
2929
  double M2 = 0.0;
2930
2930
  ca_size_t __unused_mc = 0;
2931
2931
  CA_SLAB_REDUCE_SUM8_EX(int8_t, double, st, p, m, M2, 0.0, __stddev_i8_P2EXPR, __unused_mc);
2932
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
2932
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
2933
2933
  }
2934
2934
  }
2935
2935
  ca_iter_state_finish(&st);
@@ -2954,7 +2954,7 @@ stddev_ki_native_u8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, in
2954
2954
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
2955
2955
  CArray *co;
2956
2956
  GetCArray(vout, co);
2957
- double *op = (double *) co->ptr;
2957
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
2958
2958
  ca_iter_state st;
2959
2959
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
2960
2960
  slab_axes, naxes, 0);
@@ -2979,14 +2979,14 @@ stddev_ki_native_u8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, in
2979
2979
  op_mask = (boolean8_t *) co->mask->ptr;
2980
2980
  }
2981
2981
  op_mask[out_i] = 1;
2982
- op[out_i++] = (double) 0.0;
2982
+ op[out_i++] = (ca_u_float64_t) 0;
2983
2983
  } else {
2984
2984
  double mean = sum / (double) n_valid;
2985
2985
  /* Pass 2: M2 = Σ (x - mean)² */
2986
2986
  double M2 = 0.0;
2987
2987
  ca_size_t __unused_mc = 0;
2988
2988
  CA_SLAB_REDUCE_SUM8_EX(uint8_t, double, st, p, m, M2, 0.0, __stddev_u8_P2EXPR, __unused_mc);
2989
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
2989
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
2990
2990
  }
2991
2991
  }
2992
2992
  ca_iter_state_finish(&st);
@@ -3011,7 +3011,7 @@ stddev_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3011
3011
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
3012
3012
  CArray *co;
3013
3013
  GetCArray(vout, co);
3014
- double *op = (double *) co->ptr;
3014
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
3015
3015
  ca_iter_state st;
3016
3016
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
3017
3017
  slab_axes, naxes, 0);
@@ -3027,7 +3027,7 @@ stddev_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3027
3027
  /* Pass 1: sum = Σx (+ masked_cnt) */
3028
3028
  double sum = 0.0;
3029
3029
  ca_size_t masked_cnt = 0;
3030
- CA_SLAB_REDUCE_SUM8_EX(int16_t, double, st, p, m, sum, 0.0, __stddev_i16_P1EXPR, masked_cnt);
3030
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int16_t, double, st, p, m, sum, 0.0, __stddev_i16_P1EXPR, masked_cnt);
3031
3031
  ca_size_t n_valid = st.slab_elements - masked_cnt;
3032
3032
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
3033
3033
  if ( __trigger ) {
@@ -3036,14 +3036,14 @@ stddev_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3036
3036
  op_mask = (boolean8_t *) co->mask->ptr;
3037
3037
  }
3038
3038
  op_mask[out_i] = 1;
3039
- op[out_i++] = (double) 0.0;
3039
+ op[out_i++] = (ca_u_float64_t) 0;
3040
3040
  } else {
3041
3041
  double mean = sum / (double) n_valid;
3042
3042
  /* Pass 2: M2 = Σ (x - mean)² */
3043
3043
  double M2 = 0.0;
3044
3044
  ca_size_t __unused_mc = 0;
3045
- CA_SLAB_REDUCE_SUM8_EX(int16_t, double, st, p, m, M2, 0.0, __stddev_i16_P2EXPR, __unused_mc);
3046
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3045
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int16_t, double, st, p, m, M2, 0.0, __stddev_i16_P2EXPR, __unused_mc);
3046
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3047
3047
  }
3048
3048
  }
3049
3049
  ca_iter_state_finish(&st);
@@ -3068,7 +3068,7 @@ stddev_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3068
3068
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
3069
3069
  CArray *co;
3070
3070
  GetCArray(vout, co);
3071
- double *op = (double *) co->ptr;
3071
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
3072
3072
  ca_iter_state st;
3073
3073
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
3074
3074
  slab_axes, naxes, 0);
@@ -3084,7 +3084,7 @@ stddev_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3084
3084
  /* Pass 1: sum = Σx (+ masked_cnt) */
3085
3085
  double sum = 0.0;
3086
3086
  ca_size_t masked_cnt = 0;
3087
- CA_SLAB_REDUCE_SUM8_EX(uint16_t, double, st, p, m, sum, 0.0, __stddev_u16_P1EXPR, masked_cnt);
3087
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint16_t, double, st, p, m, sum, 0.0, __stddev_u16_P1EXPR, masked_cnt);
3088
3088
  ca_size_t n_valid = st.slab_elements - masked_cnt;
3089
3089
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
3090
3090
  if ( __trigger ) {
@@ -3093,14 +3093,14 @@ stddev_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3093
3093
  op_mask = (boolean8_t *) co->mask->ptr;
3094
3094
  }
3095
3095
  op_mask[out_i] = 1;
3096
- op[out_i++] = (double) 0.0;
3096
+ op[out_i++] = (ca_u_float64_t) 0;
3097
3097
  } else {
3098
3098
  double mean = sum / (double) n_valid;
3099
3099
  /* Pass 2: M2 = Σ (x - mean)² */
3100
3100
  double M2 = 0.0;
3101
3101
  ca_size_t __unused_mc = 0;
3102
- CA_SLAB_REDUCE_SUM8_EX(uint16_t, double, st, p, m, M2, 0.0, __stddev_u16_P2EXPR, __unused_mc);
3103
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3102
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint16_t, double, st, p, m, M2, 0.0, __stddev_u16_P2EXPR, __unused_mc);
3103
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3104
3104
  }
3105
3105
  }
3106
3106
  ca_iter_state_finish(&st);
@@ -3125,7 +3125,7 @@ stddev_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3125
3125
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
3126
3126
  CArray *co;
3127
3127
  GetCArray(vout, co);
3128
- double *op = (double *) co->ptr;
3128
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
3129
3129
  ca_iter_state st;
3130
3130
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
3131
3131
  slab_axes, naxes, 0);
@@ -3141,7 +3141,7 @@ stddev_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3141
3141
  /* Pass 1: sum = Σx (+ masked_cnt) */
3142
3142
  double sum = 0.0;
3143
3143
  ca_size_t masked_cnt = 0;
3144
- CA_SLAB_REDUCE_SUM8_EX(int32_t, double, st, p, m, sum, 0.0, __stddev_i32_P1EXPR, masked_cnt);
3144
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int32_t, double, st, p, m, sum, 0.0, __stddev_i32_P1EXPR, masked_cnt);
3145
3145
  ca_size_t n_valid = st.slab_elements - masked_cnt;
3146
3146
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
3147
3147
  if ( __trigger ) {
@@ -3150,14 +3150,14 @@ stddev_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3150
3150
  op_mask = (boolean8_t *) co->mask->ptr;
3151
3151
  }
3152
3152
  op_mask[out_i] = 1;
3153
- op[out_i++] = (double) 0.0;
3153
+ op[out_i++] = (ca_u_float64_t) 0;
3154
3154
  } else {
3155
3155
  double mean = sum / (double) n_valid;
3156
3156
  /* Pass 2: M2 = Σ (x - mean)² */
3157
3157
  double M2 = 0.0;
3158
3158
  ca_size_t __unused_mc = 0;
3159
- CA_SLAB_REDUCE_SUM8_EX(int32_t, double, st, p, m, M2, 0.0, __stddev_i32_P2EXPR, __unused_mc);
3160
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3159
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int32_t, double, st, p, m, M2, 0.0, __stddev_i32_P2EXPR, __unused_mc);
3160
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3161
3161
  }
3162
3162
  }
3163
3163
  ca_iter_state_finish(&st);
@@ -3182,7 +3182,7 @@ stddev_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3182
3182
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
3183
3183
  CArray *co;
3184
3184
  GetCArray(vout, co);
3185
- double *op = (double *) co->ptr;
3185
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
3186
3186
  ca_iter_state st;
3187
3187
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
3188
3188
  slab_axes, naxes, 0);
@@ -3198,7 +3198,7 @@ stddev_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3198
3198
  /* Pass 1: sum = Σx (+ masked_cnt) */
3199
3199
  double sum = 0.0;
3200
3200
  ca_size_t masked_cnt = 0;
3201
- CA_SLAB_REDUCE_SUM8_EX(uint32_t, double, st, p, m, sum, 0.0, __stddev_u32_P1EXPR, masked_cnt);
3201
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint32_t, double, st, p, m, sum, 0.0, __stddev_u32_P1EXPR, masked_cnt);
3202
3202
  ca_size_t n_valid = st.slab_elements - masked_cnt;
3203
3203
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
3204
3204
  if ( __trigger ) {
@@ -3207,14 +3207,14 @@ stddev_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3207
3207
  op_mask = (boolean8_t *) co->mask->ptr;
3208
3208
  }
3209
3209
  op_mask[out_i] = 1;
3210
- op[out_i++] = (double) 0.0;
3210
+ op[out_i++] = (ca_u_float64_t) 0;
3211
3211
  } else {
3212
3212
  double mean = sum / (double) n_valid;
3213
3213
  /* Pass 2: M2 = Σ (x - mean)² */
3214
3214
  double M2 = 0.0;
3215
3215
  ca_size_t __unused_mc = 0;
3216
- CA_SLAB_REDUCE_SUM8_EX(uint32_t, double, st, p, m, M2, 0.0, __stddev_u32_P2EXPR, __unused_mc);
3217
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3216
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint32_t, double, st, p, m, M2, 0.0, __stddev_u32_P2EXPR, __unused_mc);
3217
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3218
3218
  }
3219
3219
  }
3220
3220
  ca_iter_state_finish(&st);
@@ -3239,7 +3239,7 @@ stddev_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3239
3239
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
3240
3240
  CArray *co;
3241
3241
  GetCArray(vout, co);
3242
- double *op = (double *) co->ptr;
3242
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
3243
3243
  ca_iter_state st;
3244
3244
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
3245
3245
  slab_axes, naxes, 0);
@@ -3255,7 +3255,7 @@ stddev_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3255
3255
  /* Pass 1: sum = Σx (+ masked_cnt) */
3256
3256
  double sum = 0.0;
3257
3257
  ca_size_t masked_cnt = 0;
3258
- CA_SLAB_REDUCE_SUM8_EX(int64_t, double, st, p, m, sum, 0.0, __stddev_i64_P1EXPR, masked_cnt);
3258
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int64_t, double, st, p, m, sum, 0.0, __stddev_i64_P1EXPR, masked_cnt);
3259
3259
  ca_size_t n_valid = st.slab_elements - masked_cnt;
3260
3260
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
3261
3261
  if ( __trigger ) {
@@ -3264,14 +3264,14 @@ stddev_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3264
3264
  op_mask = (boolean8_t *) co->mask->ptr;
3265
3265
  }
3266
3266
  op_mask[out_i] = 1;
3267
- op[out_i++] = (double) 0.0;
3267
+ op[out_i++] = (ca_u_float64_t) 0;
3268
3268
  } else {
3269
3269
  double mean = sum / (double) n_valid;
3270
3270
  /* Pass 2: M2 = Σ (x - mean)² */
3271
3271
  double M2 = 0.0;
3272
3272
  ca_size_t __unused_mc = 0;
3273
- CA_SLAB_REDUCE_SUM8_EX(int64_t, double, st, p, m, M2, 0.0, __stddev_i64_P2EXPR, __unused_mc);
3274
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3273
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_int64_t, double, st, p, m, M2, 0.0, __stddev_i64_P2EXPR, __unused_mc);
3274
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3275
3275
  }
3276
3276
  }
3277
3277
  ca_iter_state_finish(&st);
@@ -3296,7 +3296,7 @@ stddev_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3296
3296
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
3297
3297
  CArray *co;
3298
3298
  GetCArray(vout, co);
3299
- double *op = (double *) co->ptr;
3299
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
3300
3300
  ca_iter_state st;
3301
3301
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
3302
3302
  slab_axes, naxes, 0);
@@ -3312,7 +3312,7 @@ stddev_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3312
3312
  /* Pass 1: sum = Σx (+ masked_cnt) */
3313
3313
  double sum = 0.0;
3314
3314
  ca_size_t masked_cnt = 0;
3315
- CA_SLAB_REDUCE_SUM8_EX(uint64_t, double, st, p, m, sum, 0.0, __stddev_u64_P1EXPR, masked_cnt);
3315
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint64_t, double, st, p, m, sum, 0.0, __stddev_u64_P1EXPR, masked_cnt);
3316
3316
  ca_size_t n_valid = st.slab_elements - masked_cnt;
3317
3317
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
3318
3318
  if ( __trigger ) {
@@ -3321,14 +3321,14 @@ stddev_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3321
3321
  op_mask = (boolean8_t *) co->mask->ptr;
3322
3322
  }
3323
3323
  op_mask[out_i] = 1;
3324
- op[out_i++] = (double) 0.0;
3324
+ op[out_i++] = (ca_u_float64_t) 0;
3325
3325
  } else {
3326
3326
  double mean = sum / (double) n_valid;
3327
3327
  /* Pass 2: M2 = Σ (x - mean)² */
3328
3328
  double M2 = 0.0;
3329
3329
  ca_size_t __unused_mc = 0;
3330
- CA_SLAB_REDUCE_SUM8_EX(uint64_t, double, st, p, m, M2, 0.0, __stddev_u64_P2EXPR, __unused_mc);
3331
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3330
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_uint64_t, double, st, p, m, M2, 0.0, __stddev_u64_P2EXPR, __unused_mc);
3331
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3332
3332
  }
3333
3333
  }
3334
3334
  ca_iter_state_finish(&st);
@@ -3353,7 +3353,7 @@ stddev_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3353
3353
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
3354
3354
  CArray *co;
3355
3355
  GetCArray(vout, co);
3356
- double *op = (double *) co->ptr;
3356
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
3357
3357
  ca_iter_state st;
3358
3358
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
3359
3359
  slab_axes, naxes, 0);
@@ -3369,7 +3369,7 @@ stddev_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3369
3369
  /* Pass 1: sum = Σx (+ masked_cnt) */
3370
3370
  double sum = 0.0;
3371
3371
  ca_size_t masked_cnt = 0;
3372
- CA_SLAB_REDUCE_SUM8_EX(float, double, st, p, m, sum, 0.0, __stddev_f32_P1EXPR, masked_cnt);
3372
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_float32_t, double, st, p, m, sum, 0.0, __stddev_f32_P1EXPR, masked_cnt);
3373
3373
  ca_size_t n_valid = st.slab_elements - masked_cnt;
3374
3374
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
3375
3375
  if ( __trigger ) {
@@ -3378,14 +3378,14 @@ stddev_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3378
3378
  op_mask = (boolean8_t *) co->mask->ptr;
3379
3379
  }
3380
3380
  op_mask[out_i] = 1;
3381
- op[out_i++] = (double) 0.0;
3381
+ op[out_i++] = (ca_u_float64_t) 0;
3382
3382
  } else {
3383
3383
  double mean = sum / (double) n_valid;
3384
3384
  /* Pass 2: M2 = Σ (x - mean)² */
3385
3385
  double M2 = 0.0;
3386
3386
  ca_size_t __unused_mc = 0;
3387
- CA_SLAB_REDUCE_SUM8_EX(float, double, st, p, m, M2, 0.0, __stddev_f32_P2EXPR, __unused_mc);
3388
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3387
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_float32_t, double, st, p, m, M2, 0.0, __stddev_f32_P2EXPR, __unused_mc);
3388
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3389
3389
  }
3390
3390
  }
3391
3391
  ca_iter_state_finish(&st);
@@ -3410,7 +3410,7 @@ stddev_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3410
3410
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
3411
3411
  CArray *co;
3412
3412
  GetCArray(vout, co);
3413
- double *op = (double *) co->ptr;
3413
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
3414
3414
  ca_iter_state st;
3415
3415
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
3416
3416
  slab_axes, naxes, 0);
@@ -3426,7 +3426,7 @@ stddev_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3426
3426
  /* Pass 1: sum = Σx (+ masked_cnt) */
3427
3427
  double sum = 0.0;
3428
3428
  ca_size_t masked_cnt = 0;
3429
- CA_SLAB_REDUCE_SUM8_EX(double, double, st, p, m, sum, 0.0, __stddev_f64_P1EXPR, masked_cnt);
3429
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_float64_t, double, st, p, m, sum, 0.0, __stddev_f64_P1EXPR, masked_cnt);
3430
3430
  ca_size_t n_valid = st.slab_elements - masked_cnt;
3431
3431
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
3432
3432
  if ( __trigger ) {
@@ -3435,14 +3435,14 @@ stddev_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
3435
3435
  op_mask = (boolean8_t *) co->mask->ptr;
3436
3436
  }
3437
3437
  op_mask[out_i] = 1;
3438
- op[out_i++] = (double) 0.0;
3438
+ op[out_i++] = (ca_u_float64_t) 0;
3439
3439
  } else {
3440
3440
  double mean = sum / (double) n_valid;
3441
3441
  /* Pass 2: M2 = Σ (x - mean)² */
3442
3442
  double M2 = 0.0;
3443
3443
  ca_size_t __unused_mc = 0;
3444
- CA_SLAB_REDUCE_SUM8_EX(double, double, st, p, m, M2, 0.0, __stddev_f64_P2EXPR, __unused_mc);
3445
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3444
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_float64_t, double, st, p, m, M2, 0.0, __stddev_f64_P2EXPR, __unused_mc);
3445
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3446
3446
  }
3447
3447
  }
3448
3448
  ca_iter_state_finish(&st);
@@ -3467,7 +3467,7 @@ stddev_ki_native_cmplx64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxe
3467
3467
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
3468
3468
  CArray *co;
3469
3469
  GetCArray(vout, co);
3470
- double *op = (double *) co->ptr;
3470
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
3471
3471
  ca_iter_state st;
3472
3472
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
3473
3473
  slab_axes, naxes, 0);
@@ -3481,9 +3481,9 @@ stddev_ki_native_cmplx64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxe
3481
3481
  boolean8_t *op_mask = NULL; /* lazily allocated on first UNDEF */
3482
3482
  while ( ca_iter_state_next_slab_axes(&st, &p, &m) ) {
3483
3483
  /* Pass 1: sum = Σx (+ masked_cnt) */
3484
- cmplx64_t sum = 0;
3484
+ ca_u_cmplx64_t sum = 0;
3485
3485
  ca_size_t masked_cnt = 0;
3486
- CA_SLAB_REDUCE_SUM8_EX(cmplx64_t, cmplx64_t, st, p, m, sum, 0, __stddev_cmplx64_P1EXPR, masked_cnt);
3486
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_cmplx64_t, ca_u_cmplx64_t, st, p, m, sum, 0, __stddev_cmplx64_P1EXPR, masked_cnt);
3487
3487
  ca_size_t n_valid = st.slab_elements - masked_cnt;
3488
3488
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
3489
3489
  if ( __trigger ) {
@@ -3492,14 +3492,14 @@ stddev_ki_native_cmplx64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxe
3492
3492
  op_mask = (boolean8_t *) co->mask->ptr;
3493
3493
  }
3494
3494
  op_mask[out_i] = 1;
3495
- op[out_i++] = (double) 0.0;
3495
+ op[out_i++] = (ca_u_float64_t) 0;
3496
3496
  } else {
3497
- cmplx64_t mean = sum / (cmplx64_t)(double) n_valid;
3497
+ ca_u_cmplx64_t mean = sum / (ca_u_cmplx64_t)(double) n_valid;
3498
3498
  /* Pass 2: M2 = Σ (x - mean)² */
3499
3499
  double M2 = 0.0;
3500
3500
  ca_size_t __unused_mc = 0;
3501
- CA_SLAB_REDUCE_SUM8_EX(cmplx64_t, double, st, p, m, M2, 0.0, __stddev_cmplx64_P2EXPR, __unused_mc);
3502
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3501
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_cmplx64_t, double, st, p, m, M2, 0.0, __stddev_cmplx64_P2EXPR, __unused_mc);
3502
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3503
3503
  }
3504
3504
  }
3505
3505
  ca_iter_state_finish(&st);
@@ -3524,7 +3524,7 @@ stddev_ki_native_cmplx128 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t nax
3524
3524
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
3525
3525
  CArray *co;
3526
3526
  GetCArray(vout, co);
3527
- double *op = (double *) co->ptr;
3527
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
3528
3528
  ca_iter_state st;
3529
3529
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
3530
3530
  slab_axes, naxes, 0);
@@ -3538,9 +3538,9 @@ stddev_ki_native_cmplx128 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t nax
3538
3538
  boolean8_t *op_mask = NULL; /* lazily allocated on first UNDEF */
3539
3539
  while ( ca_iter_state_next_slab_axes(&st, &p, &m) ) {
3540
3540
  /* Pass 1: sum = Σx (+ masked_cnt) */
3541
- cmplx128_t sum = 0;
3541
+ ca_u_cmplx128_t sum = 0;
3542
3542
  ca_size_t masked_cnt = 0;
3543
- CA_SLAB_REDUCE_SUM8_EX(cmplx128_t, cmplx128_t, st, p, m, sum, 0, __stddev_cmplx128_P1EXPR, masked_cnt);
3543
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_cmplx128_t, ca_u_cmplx128_t, st, p, m, sum, 0, __stddev_cmplx128_P1EXPR, masked_cnt);
3544
3544
  ca_size_t n_valid = st.slab_elements - masked_cnt;
3545
3545
  int __trigger = ca_too_few_present(n_valid, min_count, 2);
3546
3546
  if ( __trigger ) {
@@ -3549,14 +3549,14 @@ stddev_ki_native_cmplx128 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t nax
3549
3549
  op_mask = (boolean8_t *) co->mask->ptr;
3550
3550
  }
3551
3551
  op_mask[out_i] = 1;
3552
- op[out_i++] = (double) 0.0;
3552
+ op[out_i++] = (ca_u_float64_t) 0;
3553
3553
  } else {
3554
- cmplx128_t mean = sum / (cmplx128_t)(double) n_valid;
3554
+ ca_u_cmplx128_t mean = sum / (ca_u_cmplx128_t)(double) n_valid;
3555
3555
  /* Pass 2: M2 = Σ (x - mean)² */
3556
3556
  double M2 = 0.0;
3557
3557
  ca_size_t __unused_mc = 0;
3558
- CA_SLAB_REDUCE_SUM8_EX(cmplx128_t, double, st, p, m, M2, 0.0, __stddev_cmplx128_P2EXPR, __unused_mc);
3559
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3558
+ CA_SLAB_REDUCE_SUM8_EX(ca_u_cmplx128_t, double, st, p, m, M2, 0.0, __stddev_cmplx128_P2EXPR, __unused_mc);
3559
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3560
3560
  }
3561
3561
  }
3562
3562
  ca_iter_state_finish(&st);
@@ -3581,7 +3581,7 @@ stddev_ki_native_bool (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
3581
3581
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
3582
3582
  CArray *co;
3583
3583
  GetCArray(vout, co);
3584
- double *op = (double *) co->ptr;
3584
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
3585
3585
  ca_iter_state st;
3586
3586
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
3587
3587
  slab_axes, naxes, 0);
@@ -3606,14 +3606,14 @@ stddev_ki_native_bool (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes,
3606
3606
  op_mask = (boolean8_t *) co->mask->ptr;
3607
3607
  }
3608
3608
  op_mask[out_i] = 1;
3609
- op[out_i++] = (double) 0.0;
3609
+ op[out_i++] = (ca_u_float64_t) 0;
3610
3610
  } else {
3611
3611
  double mean = sum / (double) n_valid;
3612
3612
  /* Pass 2: M2 = Σ (x - mean)² */
3613
3613
  double M2 = 0.0;
3614
3614
  ca_size_t __unused_mc = 0;
3615
3615
  CA_SLAB_REDUCE_SUM8_EX(boolean8_t, double, st, p, m, M2, 0.0, __stddev_bool_P2EXPR, __unused_mc);
3616
- op[out_i++] = (double)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3616
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(M2 / (double)(n_valid - 1)));
3617
3617
  }
3618
3618
  }
3619
3619
  ca_iter_state_finish(&st);
@@ -3663,7 +3663,7 @@ stddev_ki_native_object_body (VALUE arg)
3663
3663
  VALUE vout = rb_ca_new_reduced(self, slab_axes, naxes, CA_FLOAT64, keep_axis);
3664
3664
  CArray *co;
3665
3665
  GetCArray(vout, co);
3666
- double *op = (double *) co->ptr;
3666
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
3667
3667
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
3668
3668
  slab_axes, naxes, 0);
3669
3669
  if ( rc != CA_ITER_OK ) {
@@ -3687,7 +3687,7 @@ stddev_ki_native_object_body (VALUE arg)
3687
3687
  op_mask = (boolean8_t *) co->mask->ptr;
3688
3688
  }
3689
3689
  op_mask[out_i] = 1;
3690
- op[out_i++] = (double) 0.0;
3690
+ op[out_i++] = (ca_u_float64_t) 0;
3691
3691
  } else {
3692
3692
  VALUE mean = rb_funcall(sum, rb_intern("/"), 1, LONG2NUM(n_valid));
3693
3693
  /* Pass 2: M2 = Σ (x - mean)² */
@@ -3695,7 +3695,7 @@ stddev_ki_native_object_body (VALUE arg)
3695
3695
  ca_size_t __unused_mc = 0;
3696
3696
  CA_SLAB_REDUCE_T_EX(VALUE, st, p, m, M2, INT2FIX(0), VALUE __d = rb_funcall(v, rb_intern("-"), 1, mean);
3697
3697
  M2 = rb_funcall(M2, rb_intern("+"), 1, rb_funcall(__d, rb_intern("*"), 1, __d)), __unused_mc);
3698
- op[out_i++] = (double)(ca_sqrt_clamp(NUM2DBL(rb_funcall(M2, rb_intern("/"), 1, LONG2NUM(n_valid - 1)))));
3698
+ op[out_i++] = (ca_u_float64_t)(ca_sqrt_clamp(NUM2DBL(rb_funcall(M2, rb_intern("/"), 1, LONG2NUM(n_valid - 1)))));
3699
3699
  }
3700
3700
  }
3701
3701
  ca_iter_state_finish(&st);