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
@@ -747,9 +747,9 @@ find_value_index_ki_native_i16 (VALUE self, CArray *ca, VALUE rval, int axis)
747
747
  return voutu;
748
748
  }
749
749
  ca_check_integer_fits(rval, CA_INT16);
750
- int16_t query_val_buf;
750
+ ca_u_int16_t query_val_buf;
751
751
  rb_ca_obj2ptr(self, rval, &query_val_buf);
752
- int16_t query_val = query_val_buf;
752
+ ca_u_int16_t query_val = query_val_buf;
753
753
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
754
754
 
755
755
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -781,7 +781,7 @@ find_value_index_ki_native_i16 (VALUE self, CArray *ca, VALUE rval, int axis)
781
781
  {
782
782
  result = (ca_size_t) -1;
783
783
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
784
- int16_t v = *(int16_t *)(slab_ptr + i * slab_stride);
784
+ ca_u_int16_t v = *(ca_u_int16_t *)(slab_ptr + i * slab_stride);
785
785
  if ( v == query_val ) { result = i; break; }
786
786
  }
787
787
  }
@@ -1017,7 +1017,7 @@ find_value_index_ki_native_i16 (VALUE self, CArray *ca, VALUE rval, int axis)
1017
1017
  val_offset += out_idx[k] * val_strides[k];
1018
1018
  }
1019
1019
  char *slab_ptr = ca->ptr + self_slab_offset;
1020
- int16_t query_val = *(int16_t *)(cv->ptr + val_offset);
1020
+ ca_u_int16_t query_val = *(ca_u_int16_t *)(cv->ptr + val_offset);
1021
1021
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
1022
1022
  double query_eps = 0.0; (void) query_eps;
1023
1023
  (void) mask_in;
@@ -1031,7 +1031,7 @@ find_value_index_ki_native_i16 (VALUE self, CArray *ca, VALUE rval, int axis)
1031
1031
  {
1032
1032
  result = (ca_size_t) -1;
1033
1033
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
1034
- int16_t v = *(int16_t *)(slab_ptr + i * slab_stride);
1034
+ ca_u_int16_t v = *(ca_u_int16_t *)(slab_ptr + i * slab_stride);
1035
1035
  if ( v == query_val ) { result = i; break; }
1036
1036
  }
1037
1037
  }
@@ -1084,9 +1084,9 @@ find_value_index_ki_native_u16 (VALUE self, CArray *ca, VALUE rval, int axis)
1084
1084
  return voutu;
1085
1085
  }
1086
1086
  ca_check_integer_fits(rval, CA_UINT16);
1087
- uint16_t query_val_buf;
1087
+ ca_u_uint16_t query_val_buf;
1088
1088
  rb_ca_obj2ptr(self, rval, &query_val_buf);
1089
- uint16_t query_val = query_val_buf;
1089
+ ca_u_uint16_t query_val = query_val_buf;
1090
1090
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
1091
1091
 
1092
1092
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -1118,7 +1118,7 @@ find_value_index_ki_native_u16 (VALUE self, CArray *ca, VALUE rval, int axis)
1118
1118
  {
1119
1119
  result = (ca_size_t) -1;
1120
1120
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
1121
- uint16_t v = *(uint16_t *)(slab_ptr + i * slab_stride);
1121
+ ca_u_uint16_t v = *(ca_u_uint16_t *)(slab_ptr + i * slab_stride);
1122
1122
  if ( v == query_val ) { result = i; break; }
1123
1123
  }
1124
1124
  }
@@ -1354,7 +1354,7 @@ find_value_index_ki_native_u16 (VALUE self, CArray *ca, VALUE rval, int axis)
1354
1354
  val_offset += out_idx[k] * val_strides[k];
1355
1355
  }
1356
1356
  char *slab_ptr = ca->ptr + self_slab_offset;
1357
- uint16_t query_val = *(uint16_t *)(cv->ptr + val_offset);
1357
+ ca_u_uint16_t query_val = *(ca_u_uint16_t *)(cv->ptr + val_offset);
1358
1358
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
1359
1359
  double query_eps = 0.0; (void) query_eps;
1360
1360
  (void) mask_in;
@@ -1368,7 +1368,7 @@ find_value_index_ki_native_u16 (VALUE self, CArray *ca, VALUE rval, int axis)
1368
1368
  {
1369
1369
  result = (ca_size_t) -1;
1370
1370
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
1371
- uint16_t v = *(uint16_t *)(slab_ptr + i * slab_stride);
1371
+ ca_u_uint16_t v = *(ca_u_uint16_t *)(slab_ptr + i * slab_stride);
1372
1372
  if ( v == query_val ) { result = i; break; }
1373
1373
  }
1374
1374
  }
@@ -1421,9 +1421,9 @@ find_value_index_ki_native_i32 (VALUE self, CArray *ca, VALUE rval, int axis)
1421
1421
  return voutu;
1422
1422
  }
1423
1423
  ca_check_integer_fits(rval, CA_INT32);
1424
- int32_t query_val_buf;
1424
+ ca_u_int32_t query_val_buf;
1425
1425
  rb_ca_obj2ptr(self, rval, &query_val_buf);
1426
- int32_t query_val = query_val_buf;
1426
+ ca_u_int32_t query_val = query_val_buf;
1427
1427
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
1428
1428
 
1429
1429
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -1455,7 +1455,7 @@ find_value_index_ki_native_i32 (VALUE self, CArray *ca, VALUE rval, int axis)
1455
1455
  {
1456
1456
  result = (ca_size_t) -1;
1457
1457
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
1458
- int32_t v = *(int32_t *)(slab_ptr + i * slab_stride);
1458
+ ca_u_int32_t v = *(ca_u_int32_t *)(slab_ptr + i * slab_stride);
1459
1459
  if ( v == query_val ) { result = i; break; }
1460
1460
  }
1461
1461
  }
@@ -1691,7 +1691,7 @@ find_value_index_ki_native_i32 (VALUE self, CArray *ca, VALUE rval, int axis)
1691
1691
  val_offset += out_idx[k] * val_strides[k];
1692
1692
  }
1693
1693
  char *slab_ptr = ca->ptr + self_slab_offset;
1694
- int32_t query_val = *(int32_t *)(cv->ptr + val_offset);
1694
+ ca_u_int32_t query_val = *(ca_u_int32_t *)(cv->ptr + val_offset);
1695
1695
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
1696
1696
  double query_eps = 0.0; (void) query_eps;
1697
1697
  (void) mask_in;
@@ -1705,7 +1705,7 @@ find_value_index_ki_native_i32 (VALUE self, CArray *ca, VALUE rval, int axis)
1705
1705
  {
1706
1706
  result = (ca_size_t) -1;
1707
1707
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
1708
- int32_t v = *(int32_t *)(slab_ptr + i * slab_stride);
1708
+ ca_u_int32_t v = *(ca_u_int32_t *)(slab_ptr + i * slab_stride);
1709
1709
  if ( v == query_val ) { result = i; break; }
1710
1710
  }
1711
1711
  }
@@ -1758,9 +1758,9 @@ find_value_index_ki_native_u32 (VALUE self, CArray *ca, VALUE rval, int axis)
1758
1758
  return voutu;
1759
1759
  }
1760
1760
  ca_check_integer_fits(rval, CA_UINT32);
1761
- uint32_t query_val_buf;
1761
+ ca_u_uint32_t query_val_buf;
1762
1762
  rb_ca_obj2ptr(self, rval, &query_val_buf);
1763
- uint32_t query_val = query_val_buf;
1763
+ ca_u_uint32_t query_val = query_val_buf;
1764
1764
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
1765
1765
 
1766
1766
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -1792,7 +1792,7 @@ find_value_index_ki_native_u32 (VALUE self, CArray *ca, VALUE rval, int axis)
1792
1792
  {
1793
1793
  result = (ca_size_t) -1;
1794
1794
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
1795
- uint32_t v = *(uint32_t *)(slab_ptr + i * slab_stride);
1795
+ ca_u_uint32_t v = *(ca_u_uint32_t *)(slab_ptr + i * slab_stride);
1796
1796
  if ( v == query_val ) { result = i; break; }
1797
1797
  }
1798
1798
  }
@@ -2028,7 +2028,7 @@ find_value_index_ki_native_u32 (VALUE self, CArray *ca, VALUE rval, int axis)
2028
2028
  val_offset += out_idx[k] * val_strides[k];
2029
2029
  }
2030
2030
  char *slab_ptr = ca->ptr + self_slab_offset;
2031
- uint32_t query_val = *(uint32_t *)(cv->ptr + val_offset);
2031
+ ca_u_uint32_t query_val = *(ca_u_uint32_t *)(cv->ptr + val_offset);
2032
2032
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
2033
2033
  double query_eps = 0.0; (void) query_eps;
2034
2034
  (void) mask_in;
@@ -2042,7 +2042,7 @@ find_value_index_ki_native_u32 (VALUE self, CArray *ca, VALUE rval, int axis)
2042
2042
  {
2043
2043
  result = (ca_size_t) -1;
2044
2044
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
2045
- uint32_t v = *(uint32_t *)(slab_ptr + i * slab_stride);
2045
+ ca_u_uint32_t v = *(ca_u_uint32_t *)(slab_ptr + i * slab_stride);
2046
2046
  if ( v == query_val ) { result = i; break; }
2047
2047
  }
2048
2048
  }
@@ -2095,9 +2095,9 @@ find_value_index_ki_native_i64 (VALUE self, CArray *ca, VALUE rval, int axis)
2095
2095
  return voutu;
2096
2096
  }
2097
2097
  ca_check_integer_fits(rval, CA_INT64);
2098
- int64_t query_val_buf;
2098
+ ca_u_int64_t query_val_buf;
2099
2099
  rb_ca_obj2ptr(self, rval, &query_val_buf);
2100
- int64_t query_val = query_val_buf;
2100
+ ca_u_int64_t query_val = query_val_buf;
2101
2101
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
2102
2102
 
2103
2103
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -2129,7 +2129,7 @@ find_value_index_ki_native_i64 (VALUE self, CArray *ca, VALUE rval, int axis)
2129
2129
  {
2130
2130
  result = (ca_size_t) -1;
2131
2131
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
2132
- int64_t v = *(int64_t *)(slab_ptr + i * slab_stride);
2132
+ ca_u_int64_t v = *(ca_u_int64_t *)(slab_ptr + i * slab_stride);
2133
2133
  if ( v == query_val ) { result = i; break; }
2134
2134
  }
2135
2135
  }
@@ -2365,7 +2365,7 @@ find_value_index_ki_native_i64 (VALUE self, CArray *ca, VALUE rval, int axis)
2365
2365
  val_offset += out_idx[k] * val_strides[k];
2366
2366
  }
2367
2367
  char *slab_ptr = ca->ptr + self_slab_offset;
2368
- int64_t query_val = *(int64_t *)(cv->ptr + val_offset);
2368
+ ca_u_int64_t query_val = *(ca_u_int64_t *)(cv->ptr + val_offset);
2369
2369
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
2370
2370
  double query_eps = 0.0; (void) query_eps;
2371
2371
  (void) mask_in;
@@ -2379,7 +2379,7 @@ find_value_index_ki_native_i64 (VALUE self, CArray *ca, VALUE rval, int axis)
2379
2379
  {
2380
2380
  result = (ca_size_t) -1;
2381
2381
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
2382
- int64_t v = *(int64_t *)(slab_ptr + i * slab_stride);
2382
+ ca_u_int64_t v = *(ca_u_int64_t *)(slab_ptr + i * slab_stride);
2383
2383
  if ( v == query_val ) { result = i; break; }
2384
2384
  }
2385
2385
  }
@@ -2432,9 +2432,9 @@ find_value_index_ki_native_u64 (VALUE self, CArray *ca, VALUE rval, int axis)
2432
2432
  return voutu;
2433
2433
  }
2434
2434
  ca_check_integer_fits(rval, CA_UINT64);
2435
- uint64_t query_val_buf;
2435
+ ca_u_uint64_t query_val_buf;
2436
2436
  rb_ca_obj2ptr(self, rval, &query_val_buf);
2437
- uint64_t query_val = query_val_buf;
2437
+ ca_u_uint64_t query_val = query_val_buf;
2438
2438
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
2439
2439
 
2440
2440
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -2466,7 +2466,7 @@ find_value_index_ki_native_u64 (VALUE self, CArray *ca, VALUE rval, int axis)
2466
2466
  {
2467
2467
  result = (ca_size_t) -1;
2468
2468
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
2469
- uint64_t v = *(uint64_t *)(slab_ptr + i * slab_stride);
2469
+ ca_u_uint64_t v = *(ca_u_uint64_t *)(slab_ptr + i * slab_stride);
2470
2470
  if ( v == query_val ) { result = i; break; }
2471
2471
  }
2472
2472
  }
@@ -2702,7 +2702,7 @@ find_value_index_ki_native_u64 (VALUE self, CArray *ca, VALUE rval, int axis)
2702
2702
  val_offset += out_idx[k] * val_strides[k];
2703
2703
  }
2704
2704
  char *slab_ptr = ca->ptr + self_slab_offset;
2705
- uint64_t query_val = *(uint64_t *)(cv->ptr + val_offset);
2705
+ ca_u_uint64_t query_val = *(ca_u_uint64_t *)(cv->ptr + val_offset);
2706
2706
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
2707
2707
  double query_eps = 0.0; (void) query_eps;
2708
2708
  (void) mask_in;
@@ -2716,7 +2716,7 @@ find_value_index_ki_native_u64 (VALUE self, CArray *ca, VALUE rval, int axis)
2716
2716
  {
2717
2717
  result = (ca_size_t) -1;
2718
2718
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
2719
- uint64_t v = *(uint64_t *)(slab_ptr + i * slab_stride);
2719
+ ca_u_uint64_t v = *(ca_u_uint64_t *)(slab_ptr + i * slab_stride);
2720
2720
  if ( v == query_val ) { result = i; break; }
2721
2721
  }
2722
2722
  }
@@ -2768,9 +2768,9 @@ find_value_index_ki_native_f32 (VALUE self, CArray *ca, VALUE rval, int axis)
2768
2768
  if ( ca->ndim == 1 ) { return Qnil; }
2769
2769
  return voutu;
2770
2770
  }
2771
- float query_val_buf;
2771
+ ca_u_float32_t query_val_buf;
2772
2772
  rb_ca_obj2ptr(self, rval, &query_val_buf);
2773
- float query_val = query_val_buf;
2773
+ ca_u_float32_t query_val = query_val_buf;
2774
2774
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
2775
2775
 
2776
2776
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -2802,7 +2802,7 @@ find_value_index_ki_native_f32 (VALUE self, CArray *ca, VALUE rval, int axis)
2802
2802
  {
2803
2803
  result = (ca_size_t) -1;
2804
2804
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
2805
- float v = *(float *)(slab_ptr + i * slab_stride);
2805
+ ca_u_float32_t v = *(ca_u_float32_t *)(slab_ptr + i * slab_stride);
2806
2806
  if ( v == query_val ) { result = i; break; }
2807
2807
  }
2808
2808
  }
@@ -3038,7 +3038,7 @@ find_value_index_ki_native_f32 (VALUE self, CArray *ca, VALUE rval, int axis)
3038
3038
  val_offset += out_idx[k] * val_strides[k];
3039
3039
  }
3040
3040
  char *slab_ptr = ca->ptr + self_slab_offset;
3041
- float query_val = *(float *)(cv->ptr + val_offset);
3041
+ ca_u_float32_t query_val = *(ca_u_float32_t *)(cv->ptr + val_offset);
3042
3042
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
3043
3043
  double query_eps = 0.0; (void) query_eps;
3044
3044
  (void) mask_in;
@@ -3052,7 +3052,7 @@ find_value_index_ki_native_f32 (VALUE self, CArray *ca, VALUE rval, int axis)
3052
3052
  {
3053
3053
  result = (ca_size_t) -1;
3054
3054
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
3055
- float v = *(float *)(slab_ptr + i * slab_stride);
3055
+ ca_u_float32_t v = *(ca_u_float32_t *)(slab_ptr + i * slab_stride);
3056
3056
  if ( v == query_val ) { result = i; break; }
3057
3057
  }
3058
3058
  }
@@ -3104,9 +3104,9 @@ find_value_index_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
3104
3104
  if ( ca->ndim == 1 ) { return Qnil; }
3105
3105
  return voutu;
3106
3106
  }
3107
- double query_val_buf;
3107
+ ca_u_float64_t query_val_buf;
3108
3108
  rb_ca_obj2ptr(self, rval, &query_val_buf);
3109
- double query_val = query_val_buf;
3109
+ ca_u_float64_t query_val = query_val_buf;
3110
3110
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
3111
3111
 
3112
3112
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -3138,7 +3138,7 @@ find_value_index_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
3138
3138
  {
3139
3139
  result = (ca_size_t) -1;
3140
3140
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
3141
- double v = *(double *)(slab_ptr + i * slab_stride);
3141
+ ca_u_float64_t v = *(ca_u_float64_t *)(slab_ptr + i * slab_stride);
3142
3142
  if ( v == query_val ) { result = i; break; }
3143
3143
  }
3144
3144
  }
@@ -3374,7 +3374,7 @@ find_value_index_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
3374
3374
  val_offset += out_idx[k] * val_strides[k];
3375
3375
  }
3376
3376
  char *slab_ptr = ca->ptr + self_slab_offset;
3377
- double query_val = *(double *)(cv->ptr + val_offset);
3377
+ ca_u_float64_t query_val = *(ca_u_float64_t *)(cv->ptr + val_offset);
3378
3378
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
3379
3379
  double query_eps = 0.0; (void) query_eps;
3380
3380
  (void) mask_in;
@@ -3388,7 +3388,7 @@ find_value_index_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
3388
3388
  {
3389
3389
  result = (ca_size_t) -1;
3390
3390
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
3391
- double v = *(double *)(slab_ptr + i * slab_stride);
3391
+ ca_u_float64_t v = *(ca_u_float64_t *)(slab_ptr + i * slab_stride);
3392
3392
  if ( v == query_val ) { result = i; break; }
3393
3393
  }
3394
3394
  }
@@ -5260,9 +5260,9 @@ bsearch_ki_native_i16 (VALUE self, CArray *ca, VALUE rval, int axis)
5260
5260
  return voutu;
5261
5261
  }
5262
5262
  ca_check_integer_fits(rval, CA_INT16);
5263
- int16_t query_val_buf;
5263
+ ca_u_int16_t query_val_buf;
5264
5264
  rb_ca_obj2ptr(self, rval, &query_val_buf);
5265
- int16_t query_val = query_val_buf;
5265
+ ca_u_int16_t query_val = query_val_buf;
5266
5266
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
5267
5267
 
5268
5268
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -5298,7 +5298,7 @@ bsearch_ki_native_i16 (VALUE self, CArray *ca, VALUE rval, int axis)
5298
5298
  ca_size_t hi = slab_n;
5299
5299
  while ( lo < hi ) {
5300
5300
  ca_size_t mid = lo + (hi - lo) / 2;
5301
- int16_t v = *(int16_t *)(slab_ptr + mid * slab_stride);
5301
+ ca_u_int16_t v = *(ca_u_int16_t *)(slab_ptr + mid * slab_stride);
5302
5302
  if ( v < query_val ) lo = mid + 1;
5303
5303
  else if ( v > query_val ) hi = mid;
5304
5304
  else { result = mid; break; }
@@ -5537,7 +5537,7 @@ bsearch_ki_native_i16 (VALUE self, CArray *ca, VALUE rval, int axis)
5537
5537
  val_offset += out_idx[k] * val_strides[k];
5538
5538
  }
5539
5539
  char *slab_ptr = ca->ptr + self_slab_offset;
5540
- int16_t query_val = *(int16_t *)(cv->ptr + val_offset);
5540
+ ca_u_int16_t query_val = *(ca_u_int16_t *)(cv->ptr + val_offset);
5541
5541
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
5542
5542
  double query_eps = 0.0; (void) query_eps;
5543
5543
  (void) mask_in;
@@ -5555,7 +5555,7 @@ bsearch_ki_native_i16 (VALUE self, CArray *ca, VALUE rval, int axis)
5555
5555
  ca_size_t hi = slab_n;
5556
5556
  while ( lo < hi ) {
5557
5557
  ca_size_t mid = lo + (hi - lo) / 2;
5558
- int16_t v = *(int16_t *)(slab_ptr + mid * slab_stride);
5558
+ ca_u_int16_t v = *(ca_u_int16_t *)(slab_ptr + mid * slab_stride);
5559
5559
  if ( v < query_val ) lo = mid + 1;
5560
5560
  else if ( v > query_val ) hi = mid;
5561
5561
  else { result = mid; break; }
@@ -5611,9 +5611,9 @@ bsearch_ki_native_u16 (VALUE self, CArray *ca, VALUE rval, int axis)
5611
5611
  return voutu;
5612
5612
  }
5613
5613
  ca_check_integer_fits(rval, CA_UINT16);
5614
- uint16_t query_val_buf;
5614
+ ca_u_uint16_t query_val_buf;
5615
5615
  rb_ca_obj2ptr(self, rval, &query_val_buf);
5616
- uint16_t query_val = query_val_buf;
5616
+ ca_u_uint16_t query_val = query_val_buf;
5617
5617
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
5618
5618
 
5619
5619
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -5649,7 +5649,7 @@ bsearch_ki_native_u16 (VALUE self, CArray *ca, VALUE rval, int axis)
5649
5649
  ca_size_t hi = slab_n;
5650
5650
  while ( lo < hi ) {
5651
5651
  ca_size_t mid = lo + (hi - lo) / 2;
5652
- uint16_t v = *(uint16_t *)(slab_ptr + mid * slab_stride);
5652
+ ca_u_uint16_t v = *(ca_u_uint16_t *)(slab_ptr + mid * slab_stride);
5653
5653
  if ( v < query_val ) lo = mid + 1;
5654
5654
  else if ( v > query_val ) hi = mid;
5655
5655
  else { result = mid; break; }
@@ -5888,7 +5888,7 @@ bsearch_ki_native_u16 (VALUE self, CArray *ca, VALUE rval, int axis)
5888
5888
  val_offset += out_idx[k] * val_strides[k];
5889
5889
  }
5890
5890
  char *slab_ptr = ca->ptr + self_slab_offset;
5891
- uint16_t query_val = *(uint16_t *)(cv->ptr + val_offset);
5891
+ ca_u_uint16_t query_val = *(ca_u_uint16_t *)(cv->ptr + val_offset);
5892
5892
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
5893
5893
  double query_eps = 0.0; (void) query_eps;
5894
5894
  (void) mask_in;
@@ -5906,7 +5906,7 @@ bsearch_ki_native_u16 (VALUE self, CArray *ca, VALUE rval, int axis)
5906
5906
  ca_size_t hi = slab_n;
5907
5907
  while ( lo < hi ) {
5908
5908
  ca_size_t mid = lo + (hi - lo) / 2;
5909
- uint16_t v = *(uint16_t *)(slab_ptr + mid * slab_stride);
5909
+ ca_u_uint16_t v = *(ca_u_uint16_t *)(slab_ptr + mid * slab_stride);
5910
5910
  if ( v < query_val ) lo = mid + 1;
5911
5911
  else if ( v > query_val ) hi = mid;
5912
5912
  else { result = mid; break; }
@@ -5962,9 +5962,9 @@ bsearch_ki_native_i32 (VALUE self, CArray *ca, VALUE rval, int axis)
5962
5962
  return voutu;
5963
5963
  }
5964
5964
  ca_check_integer_fits(rval, CA_INT32);
5965
- int32_t query_val_buf;
5965
+ ca_u_int32_t query_val_buf;
5966
5966
  rb_ca_obj2ptr(self, rval, &query_val_buf);
5967
- int32_t query_val = query_val_buf;
5967
+ ca_u_int32_t query_val = query_val_buf;
5968
5968
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
5969
5969
 
5970
5970
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -6000,7 +6000,7 @@ bsearch_ki_native_i32 (VALUE self, CArray *ca, VALUE rval, int axis)
6000
6000
  ca_size_t hi = slab_n;
6001
6001
  while ( lo < hi ) {
6002
6002
  ca_size_t mid = lo + (hi - lo) / 2;
6003
- int32_t v = *(int32_t *)(slab_ptr + mid * slab_stride);
6003
+ ca_u_int32_t v = *(ca_u_int32_t *)(slab_ptr + mid * slab_stride);
6004
6004
  if ( v < query_val ) lo = mid + 1;
6005
6005
  else if ( v > query_val ) hi = mid;
6006
6006
  else { result = mid; break; }
@@ -6239,7 +6239,7 @@ bsearch_ki_native_i32 (VALUE self, CArray *ca, VALUE rval, int axis)
6239
6239
  val_offset += out_idx[k] * val_strides[k];
6240
6240
  }
6241
6241
  char *slab_ptr = ca->ptr + self_slab_offset;
6242
- int32_t query_val = *(int32_t *)(cv->ptr + val_offset);
6242
+ ca_u_int32_t query_val = *(ca_u_int32_t *)(cv->ptr + val_offset);
6243
6243
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
6244
6244
  double query_eps = 0.0; (void) query_eps;
6245
6245
  (void) mask_in;
@@ -6257,7 +6257,7 @@ bsearch_ki_native_i32 (VALUE self, CArray *ca, VALUE rval, int axis)
6257
6257
  ca_size_t hi = slab_n;
6258
6258
  while ( lo < hi ) {
6259
6259
  ca_size_t mid = lo + (hi - lo) / 2;
6260
- int32_t v = *(int32_t *)(slab_ptr + mid * slab_stride);
6260
+ ca_u_int32_t v = *(ca_u_int32_t *)(slab_ptr + mid * slab_stride);
6261
6261
  if ( v < query_val ) lo = mid + 1;
6262
6262
  else if ( v > query_val ) hi = mid;
6263
6263
  else { result = mid; break; }
@@ -6313,9 +6313,9 @@ bsearch_ki_native_u32 (VALUE self, CArray *ca, VALUE rval, int axis)
6313
6313
  return voutu;
6314
6314
  }
6315
6315
  ca_check_integer_fits(rval, CA_UINT32);
6316
- uint32_t query_val_buf;
6316
+ ca_u_uint32_t query_val_buf;
6317
6317
  rb_ca_obj2ptr(self, rval, &query_val_buf);
6318
- uint32_t query_val = query_val_buf;
6318
+ ca_u_uint32_t query_val = query_val_buf;
6319
6319
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
6320
6320
 
6321
6321
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -6351,7 +6351,7 @@ bsearch_ki_native_u32 (VALUE self, CArray *ca, VALUE rval, int axis)
6351
6351
  ca_size_t hi = slab_n;
6352
6352
  while ( lo < hi ) {
6353
6353
  ca_size_t mid = lo + (hi - lo) / 2;
6354
- uint32_t v = *(uint32_t *)(slab_ptr + mid * slab_stride);
6354
+ ca_u_uint32_t v = *(ca_u_uint32_t *)(slab_ptr + mid * slab_stride);
6355
6355
  if ( v < query_val ) lo = mid + 1;
6356
6356
  else if ( v > query_val ) hi = mid;
6357
6357
  else { result = mid; break; }
@@ -6590,7 +6590,7 @@ bsearch_ki_native_u32 (VALUE self, CArray *ca, VALUE rval, int axis)
6590
6590
  val_offset += out_idx[k] * val_strides[k];
6591
6591
  }
6592
6592
  char *slab_ptr = ca->ptr + self_slab_offset;
6593
- uint32_t query_val = *(uint32_t *)(cv->ptr + val_offset);
6593
+ ca_u_uint32_t query_val = *(ca_u_uint32_t *)(cv->ptr + val_offset);
6594
6594
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
6595
6595
  double query_eps = 0.0; (void) query_eps;
6596
6596
  (void) mask_in;
@@ -6608,7 +6608,7 @@ bsearch_ki_native_u32 (VALUE self, CArray *ca, VALUE rval, int axis)
6608
6608
  ca_size_t hi = slab_n;
6609
6609
  while ( lo < hi ) {
6610
6610
  ca_size_t mid = lo + (hi - lo) / 2;
6611
- uint32_t v = *(uint32_t *)(slab_ptr + mid * slab_stride);
6611
+ ca_u_uint32_t v = *(ca_u_uint32_t *)(slab_ptr + mid * slab_stride);
6612
6612
  if ( v < query_val ) lo = mid + 1;
6613
6613
  else if ( v > query_val ) hi = mid;
6614
6614
  else { result = mid; break; }
@@ -6664,9 +6664,9 @@ bsearch_ki_native_i64 (VALUE self, CArray *ca, VALUE rval, int axis)
6664
6664
  return voutu;
6665
6665
  }
6666
6666
  ca_check_integer_fits(rval, CA_INT64);
6667
- int64_t query_val_buf;
6667
+ ca_u_int64_t query_val_buf;
6668
6668
  rb_ca_obj2ptr(self, rval, &query_val_buf);
6669
- int64_t query_val = query_val_buf;
6669
+ ca_u_int64_t query_val = query_val_buf;
6670
6670
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
6671
6671
 
6672
6672
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -6702,7 +6702,7 @@ bsearch_ki_native_i64 (VALUE self, CArray *ca, VALUE rval, int axis)
6702
6702
  ca_size_t hi = slab_n;
6703
6703
  while ( lo < hi ) {
6704
6704
  ca_size_t mid = lo + (hi - lo) / 2;
6705
- int64_t v = *(int64_t *)(slab_ptr + mid * slab_stride);
6705
+ ca_u_int64_t v = *(ca_u_int64_t *)(slab_ptr + mid * slab_stride);
6706
6706
  if ( v < query_val ) lo = mid + 1;
6707
6707
  else if ( v > query_val ) hi = mid;
6708
6708
  else { result = mid; break; }
@@ -6941,7 +6941,7 @@ bsearch_ki_native_i64 (VALUE self, CArray *ca, VALUE rval, int axis)
6941
6941
  val_offset += out_idx[k] * val_strides[k];
6942
6942
  }
6943
6943
  char *slab_ptr = ca->ptr + self_slab_offset;
6944
- int64_t query_val = *(int64_t *)(cv->ptr + val_offset);
6944
+ ca_u_int64_t query_val = *(ca_u_int64_t *)(cv->ptr + val_offset);
6945
6945
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
6946
6946
  double query_eps = 0.0; (void) query_eps;
6947
6947
  (void) mask_in;
@@ -6959,7 +6959,7 @@ bsearch_ki_native_i64 (VALUE self, CArray *ca, VALUE rval, int axis)
6959
6959
  ca_size_t hi = slab_n;
6960
6960
  while ( lo < hi ) {
6961
6961
  ca_size_t mid = lo + (hi - lo) / 2;
6962
- int64_t v = *(int64_t *)(slab_ptr + mid * slab_stride);
6962
+ ca_u_int64_t v = *(ca_u_int64_t *)(slab_ptr + mid * slab_stride);
6963
6963
  if ( v < query_val ) lo = mid + 1;
6964
6964
  else if ( v > query_val ) hi = mid;
6965
6965
  else { result = mid; break; }
@@ -7015,9 +7015,9 @@ bsearch_ki_native_u64 (VALUE self, CArray *ca, VALUE rval, int axis)
7015
7015
  return voutu;
7016
7016
  }
7017
7017
  ca_check_integer_fits(rval, CA_UINT64);
7018
- uint64_t query_val_buf;
7018
+ ca_u_uint64_t query_val_buf;
7019
7019
  rb_ca_obj2ptr(self, rval, &query_val_buf);
7020
- uint64_t query_val = query_val_buf;
7020
+ ca_u_uint64_t query_val = query_val_buf;
7021
7021
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
7022
7022
 
7023
7023
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -7053,7 +7053,7 @@ bsearch_ki_native_u64 (VALUE self, CArray *ca, VALUE rval, int axis)
7053
7053
  ca_size_t hi = slab_n;
7054
7054
  while ( lo < hi ) {
7055
7055
  ca_size_t mid = lo + (hi - lo) / 2;
7056
- uint64_t v = *(uint64_t *)(slab_ptr + mid * slab_stride);
7056
+ ca_u_uint64_t v = *(ca_u_uint64_t *)(slab_ptr + mid * slab_stride);
7057
7057
  if ( v < query_val ) lo = mid + 1;
7058
7058
  else if ( v > query_val ) hi = mid;
7059
7059
  else { result = mid; break; }
@@ -7292,7 +7292,7 @@ bsearch_ki_native_u64 (VALUE self, CArray *ca, VALUE rval, int axis)
7292
7292
  val_offset += out_idx[k] * val_strides[k];
7293
7293
  }
7294
7294
  char *slab_ptr = ca->ptr + self_slab_offset;
7295
- uint64_t query_val = *(uint64_t *)(cv->ptr + val_offset);
7295
+ ca_u_uint64_t query_val = *(ca_u_uint64_t *)(cv->ptr + val_offset);
7296
7296
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
7297
7297
  double query_eps = 0.0; (void) query_eps;
7298
7298
  (void) mask_in;
@@ -7310,7 +7310,7 @@ bsearch_ki_native_u64 (VALUE self, CArray *ca, VALUE rval, int axis)
7310
7310
  ca_size_t hi = slab_n;
7311
7311
  while ( lo < hi ) {
7312
7312
  ca_size_t mid = lo + (hi - lo) / 2;
7313
- uint64_t v = *(uint64_t *)(slab_ptr + mid * slab_stride);
7313
+ ca_u_uint64_t v = *(ca_u_uint64_t *)(slab_ptr + mid * slab_stride);
7314
7314
  if ( v < query_val ) lo = mid + 1;
7315
7315
  else if ( v > query_val ) hi = mid;
7316
7316
  else { result = mid; break; }
@@ -7365,9 +7365,9 @@ bsearch_ki_native_f32 (VALUE self, CArray *ca, VALUE rval, int axis)
7365
7365
  if ( ca->ndim == 1 ) { return Qnil; }
7366
7366
  return voutu;
7367
7367
  }
7368
- float query_val_buf;
7368
+ ca_u_float32_t query_val_buf;
7369
7369
  rb_ca_obj2ptr(self, rval, &query_val_buf);
7370
- float query_val = query_val_buf;
7370
+ ca_u_float32_t query_val = query_val_buf;
7371
7371
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
7372
7372
 
7373
7373
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -7403,7 +7403,7 @@ bsearch_ki_native_f32 (VALUE self, CArray *ca, VALUE rval, int axis)
7403
7403
  ca_size_t hi = slab_n;
7404
7404
  while ( lo < hi ) {
7405
7405
  ca_size_t mid = lo + (hi - lo) / 2;
7406
- float v = *(float *)(slab_ptr + mid * slab_stride);
7406
+ ca_u_float32_t v = *(ca_u_float32_t *)(slab_ptr + mid * slab_stride);
7407
7407
  int c = CA_FLOAT_ORDER_CMP(v, query_val);
7408
7408
  if ( c < 0 ) lo = mid + 1;
7409
7409
  else if ( c > 0 ) hi = mid;
@@ -7643,7 +7643,7 @@ bsearch_ki_native_f32 (VALUE self, CArray *ca, VALUE rval, int axis)
7643
7643
  val_offset += out_idx[k] * val_strides[k];
7644
7644
  }
7645
7645
  char *slab_ptr = ca->ptr + self_slab_offset;
7646
- float query_val = *(float *)(cv->ptr + val_offset);
7646
+ ca_u_float32_t query_val = *(ca_u_float32_t *)(cv->ptr + val_offset);
7647
7647
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
7648
7648
  double query_eps = 0.0; (void) query_eps;
7649
7649
  (void) mask_in;
@@ -7661,7 +7661,7 @@ bsearch_ki_native_f32 (VALUE self, CArray *ca, VALUE rval, int axis)
7661
7661
  ca_size_t hi = slab_n;
7662
7662
  while ( lo < hi ) {
7663
7663
  ca_size_t mid = lo + (hi - lo) / 2;
7664
- float v = *(float *)(slab_ptr + mid * slab_stride);
7664
+ ca_u_float32_t v = *(ca_u_float32_t *)(slab_ptr + mid * slab_stride);
7665
7665
  int c = CA_FLOAT_ORDER_CMP(v, query_val);
7666
7666
  if ( c < 0 ) lo = mid + 1;
7667
7667
  else if ( c > 0 ) hi = mid;
@@ -7717,9 +7717,9 @@ bsearch_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
7717
7717
  if ( ca->ndim == 1 ) { return Qnil; }
7718
7718
  return voutu;
7719
7719
  }
7720
- double query_val_buf;
7720
+ ca_u_float64_t query_val_buf;
7721
7721
  rb_ca_obj2ptr(self, rval, &query_val_buf);
7722
- double query_val = query_val_buf;
7722
+ ca_u_float64_t query_val = query_val_buf;
7723
7723
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
7724
7724
 
7725
7725
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -7755,7 +7755,7 @@ bsearch_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
7755
7755
  ca_size_t hi = slab_n;
7756
7756
  while ( lo < hi ) {
7757
7757
  ca_size_t mid = lo + (hi - lo) / 2;
7758
- double v = *(double *)(slab_ptr + mid * slab_stride);
7758
+ ca_u_float64_t v = *(ca_u_float64_t *)(slab_ptr + mid * slab_stride);
7759
7759
  int c = CA_FLOAT_ORDER_CMP(v, query_val);
7760
7760
  if ( c < 0 ) lo = mid + 1;
7761
7761
  else if ( c > 0 ) hi = mid;
@@ -7995,7 +7995,7 @@ bsearch_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
7995
7995
  val_offset += out_idx[k] * val_strides[k];
7996
7996
  }
7997
7997
  char *slab_ptr = ca->ptr + self_slab_offset;
7998
- double query_val = *(double *)(cv->ptr + val_offset);
7998
+ ca_u_float64_t query_val = *(ca_u_float64_t *)(cv->ptr + val_offset);
7999
7999
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
8000
8000
  double query_eps = 0.0; (void) query_eps;
8001
8001
  (void) mask_in;
@@ -8013,7 +8013,7 @@ bsearch_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
8013
8013
  ca_size_t hi = slab_n;
8014
8014
  while ( lo < hi ) {
8015
8015
  ca_size_t mid = lo + (hi - lo) / 2;
8016
- double v = *(double *)(slab_ptr + mid * slab_stride);
8016
+ ca_u_float64_t v = *(ca_u_float64_t *)(slab_ptr + mid * slab_stride);
8017
8017
  int c = CA_FLOAT_ORDER_CMP(v, query_val);
8018
8018
  if ( c < 0 ) lo = mid + 1;
8019
8019
  else if ( c > 0 ) hi = mid;
@@ -9919,9 +9919,9 @@ search_ki_native_i16 (VALUE self, CArray *ca, VALUE rval, int axis, VALUE reps)
9919
9919
  return voutu;
9920
9920
  }
9921
9921
  ca_check_integer_fits(rval, CA_INT16);
9922
- int16_t query_val_buf;
9922
+ ca_u_int16_t query_val_buf;
9923
9923
  rb_ca_obj2ptr(self, rval, &query_val_buf);
9924
- int16_t query_val = query_val_buf;
9924
+ ca_u_int16_t query_val = query_val_buf;
9925
9925
  int eps_is_default = NIL_P(reps);
9926
9926
  double user_eps = eps_is_default ? 0.0 : NUM2DBL(reps);
9927
9927
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
@@ -9956,7 +9956,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0)
9956
9956
  (void) query_eps; /* int data_type: exact match, eps ignored */
9957
9957
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
9958
9958
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
9959
- int16_t v = *(int16_t *)(slab_ptr + i * slab_stride);
9959
+ ca_u_int16_t v = *(ca_u_int16_t *)(slab_ptr + i * slab_stride);
9960
9960
  if ( v == query_val ) { result = i; break; }
9961
9961
  }
9962
9962
  }
@@ -10193,7 +10193,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0)
10193
10193
  val_offset += out_idx[k] * val_strides[k];
10194
10194
  }
10195
10195
  char *slab_ptr = ca->ptr + self_slab_offset;
10196
- int16_t query_val = *(int16_t *)(cv->ptr + val_offset);
10196
+ ca_u_int16_t query_val = *(ca_u_int16_t *)(cv->ptr + val_offset);
10197
10197
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
10198
10198
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
10199
10199
 
@@ -10208,7 +10208,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0)
10208
10208
  (void) query_eps; /* int data_type: exact match, eps ignored */
10209
10209
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
10210
10210
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
10211
- int16_t v = *(int16_t *)(slab_ptr + i * slab_stride);
10211
+ ca_u_int16_t v = *(ca_u_int16_t *)(slab_ptr + i * slab_stride);
10212
10212
  if ( v == query_val ) { result = i; break; }
10213
10213
  }
10214
10214
  }
@@ -10261,9 +10261,9 @@ search_ki_native_u16 (VALUE self, CArray *ca, VALUE rval, int axis, VALUE reps)
10261
10261
  return voutu;
10262
10262
  }
10263
10263
  ca_check_integer_fits(rval, CA_UINT16);
10264
- uint16_t query_val_buf;
10264
+ ca_u_uint16_t query_val_buf;
10265
10265
  rb_ca_obj2ptr(self, rval, &query_val_buf);
10266
- uint16_t query_val = query_val_buf;
10266
+ ca_u_uint16_t query_val = query_val_buf;
10267
10267
  int eps_is_default = NIL_P(reps);
10268
10268
  double user_eps = eps_is_default ? 0.0 : NUM2DBL(reps);
10269
10269
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
@@ -10298,7 +10298,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0)
10298
10298
  (void) query_eps; /* int data_type: exact match, eps ignored */
10299
10299
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
10300
10300
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
10301
- uint16_t v = *(uint16_t *)(slab_ptr + i * slab_stride);
10301
+ ca_u_uint16_t v = *(ca_u_uint16_t *)(slab_ptr + i * slab_stride);
10302
10302
  if ( v == query_val ) { result = i; break; }
10303
10303
  }
10304
10304
  }
@@ -10535,7 +10535,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0)
10535
10535
  val_offset += out_idx[k] * val_strides[k];
10536
10536
  }
10537
10537
  char *slab_ptr = ca->ptr + self_slab_offset;
10538
- uint16_t query_val = *(uint16_t *)(cv->ptr + val_offset);
10538
+ ca_u_uint16_t query_val = *(ca_u_uint16_t *)(cv->ptr + val_offset);
10539
10539
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
10540
10540
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
10541
10541
 
@@ -10550,7 +10550,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0)
10550
10550
  (void) query_eps; /* int data_type: exact match, eps ignored */
10551
10551
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
10552
10552
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
10553
- uint16_t v = *(uint16_t *)(slab_ptr + i * slab_stride);
10553
+ ca_u_uint16_t v = *(ca_u_uint16_t *)(slab_ptr + i * slab_stride);
10554
10554
  if ( v == query_val ) { result = i; break; }
10555
10555
  }
10556
10556
  }
@@ -10603,9 +10603,9 @@ search_ki_native_i32 (VALUE self, CArray *ca, VALUE rval, int axis, VALUE reps)
10603
10603
  return voutu;
10604
10604
  }
10605
10605
  ca_check_integer_fits(rval, CA_INT32);
10606
- int32_t query_val_buf;
10606
+ ca_u_int32_t query_val_buf;
10607
10607
  rb_ca_obj2ptr(self, rval, &query_val_buf);
10608
- int32_t query_val = query_val_buf;
10608
+ ca_u_int32_t query_val = query_val_buf;
10609
10609
  int eps_is_default = NIL_P(reps);
10610
10610
  double user_eps = eps_is_default ? 0.0 : NUM2DBL(reps);
10611
10611
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
@@ -10640,7 +10640,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0)
10640
10640
  (void) query_eps; /* int data_type: exact match, eps ignored */
10641
10641
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
10642
10642
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
10643
- int32_t v = *(int32_t *)(slab_ptr + i * slab_stride);
10643
+ ca_u_int32_t v = *(ca_u_int32_t *)(slab_ptr + i * slab_stride);
10644
10644
  if ( v == query_val ) { result = i; break; }
10645
10645
  }
10646
10646
  }
@@ -10877,7 +10877,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0)
10877
10877
  val_offset += out_idx[k] * val_strides[k];
10878
10878
  }
10879
10879
  char *slab_ptr = ca->ptr + self_slab_offset;
10880
- int32_t query_val = *(int32_t *)(cv->ptr + val_offset);
10880
+ ca_u_int32_t query_val = *(ca_u_int32_t *)(cv->ptr + val_offset);
10881
10881
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
10882
10882
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
10883
10883
 
@@ -10892,7 +10892,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0)
10892
10892
  (void) query_eps; /* int data_type: exact match, eps ignored */
10893
10893
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
10894
10894
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
10895
- int32_t v = *(int32_t *)(slab_ptr + i * slab_stride);
10895
+ ca_u_int32_t v = *(ca_u_int32_t *)(slab_ptr + i * slab_stride);
10896
10896
  if ( v == query_val ) { result = i; break; }
10897
10897
  }
10898
10898
  }
@@ -10945,9 +10945,9 @@ search_ki_native_u32 (VALUE self, CArray *ca, VALUE rval, int axis, VALUE reps)
10945
10945
  return voutu;
10946
10946
  }
10947
10947
  ca_check_integer_fits(rval, CA_UINT32);
10948
- uint32_t query_val_buf;
10948
+ ca_u_uint32_t query_val_buf;
10949
10949
  rb_ca_obj2ptr(self, rval, &query_val_buf);
10950
- uint32_t query_val = query_val_buf;
10950
+ ca_u_uint32_t query_val = query_val_buf;
10951
10951
  int eps_is_default = NIL_P(reps);
10952
10952
  double user_eps = eps_is_default ? 0.0 : NUM2DBL(reps);
10953
10953
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
@@ -10982,7 +10982,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0)
10982
10982
  (void) query_eps; /* int data_type: exact match, eps ignored */
10983
10983
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
10984
10984
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
10985
- uint32_t v = *(uint32_t *)(slab_ptr + i * slab_stride);
10985
+ ca_u_uint32_t v = *(ca_u_uint32_t *)(slab_ptr + i * slab_stride);
10986
10986
  if ( v == query_val ) { result = i; break; }
10987
10987
  }
10988
10988
  }
@@ -11219,7 +11219,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0)
11219
11219
  val_offset += out_idx[k] * val_strides[k];
11220
11220
  }
11221
11221
  char *slab_ptr = ca->ptr + self_slab_offset;
11222
- uint32_t query_val = *(uint32_t *)(cv->ptr + val_offset);
11222
+ ca_u_uint32_t query_val = *(ca_u_uint32_t *)(cv->ptr + val_offset);
11223
11223
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
11224
11224
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
11225
11225
 
@@ -11234,7 +11234,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0)
11234
11234
  (void) query_eps; /* int data_type: exact match, eps ignored */
11235
11235
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
11236
11236
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
11237
- uint32_t v = *(uint32_t *)(slab_ptr + i * slab_stride);
11237
+ ca_u_uint32_t v = *(ca_u_uint32_t *)(slab_ptr + i * slab_stride);
11238
11238
  if ( v == query_val ) { result = i; break; }
11239
11239
  }
11240
11240
  }
@@ -11287,9 +11287,9 @@ search_ki_native_i64 (VALUE self, CArray *ca, VALUE rval, int axis, VALUE reps)
11287
11287
  return voutu;
11288
11288
  }
11289
11289
  ca_check_integer_fits(rval, CA_INT64);
11290
- int64_t query_val_buf;
11290
+ ca_u_int64_t query_val_buf;
11291
11291
  rb_ca_obj2ptr(self, rval, &query_val_buf);
11292
- int64_t query_val = query_val_buf;
11292
+ ca_u_int64_t query_val = query_val_buf;
11293
11293
  int eps_is_default = NIL_P(reps);
11294
11294
  double user_eps = eps_is_default ? 0.0 : NUM2DBL(reps);
11295
11295
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
@@ -11324,7 +11324,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0)
11324
11324
  (void) query_eps; /* int data_type: exact match, eps ignored */
11325
11325
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
11326
11326
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
11327
- int64_t v = *(int64_t *)(slab_ptr + i * slab_stride);
11327
+ ca_u_int64_t v = *(ca_u_int64_t *)(slab_ptr + i * slab_stride);
11328
11328
  if ( v == query_val ) { result = i; break; }
11329
11329
  }
11330
11330
  }
@@ -11561,7 +11561,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0)
11561
11561
  val_offset += out_idx[k] * val_strides[k];
11562
11562
  }
11563
11563
  char *slab_ptr = ca->ptr + self_slab_offset;
11564
- int64_t query_val = *(int64_t *)(cv->ptr + val_offset);
11564
+ ca_u_int64_t query_val = *(ca_u_int64_t *)(cv->ptr + val_offset);
11565
11565
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
11566
11566
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
11567
11567
 
@@ -11576,7 +11576,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0)
11576
11576
  (void) query_eps; /* int data_type: exact match, eps ignored */
11577
11577
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
11578
11578
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
11579
- int64_t v = *(int64_t *)(slab_ptr + i * slab_stride);
11579
+ ca_u_int64_t v = *(ca_u_int64_t *)(slab_ptr + i * slab_stride);
11580
11580
  if ( v == query_val ) { result = i; break; }
11581
11581
  }
11582
11582
  }
@@ -11629,9 +11629,9 @@ search_ki_native_u64 (VALUE self, CArray *ca, VALUE rval, int axis, VALUE reps)
11629
11629
  return voutu;
11630
11630
  }
11631
11631
  ca_check_integer_fits(rval, CA_UINT64);
11632
- uint64_t query_val_buf;
11632
+ ca_u_uint64_t query_val_buf;
11633
11633
  rb_ca_obj2ptr(self, rval, &query_val_buf);
11634
- uint64_t query_val = query_val_buf;
11634
+ ca_u_uint64_t query_val = query_val_buf;
11635
11635
  int eps_is_default = NIL_P(reps);
11636
11636
  double user_eps = eps_is_default ? 0.0 : NUM2DBL(reps);
11637
11637
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
@@ -11666,7 +11666,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0)
11666
11666
  (void) query_eps; /* int data_type: exact match, eps ignored */
11667
11667
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
11668
11668
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
11669
- uint64_t v = *(uint64_t *)(slab_ptr + i * slab_stride);
11669
+ ca_u_uint64_t v = *(ca_u_uint64_t *)(slab_ptr + i * slab_stride);
11670
11670
  if ( v == query_val ) { result = i; break; }
11671
11671
  }
11672
11672
  }
@@ -11903,7 +11903,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0)
11903
11903
  val_offset += out_idx[k] * val_strides[k];
11904
11904
  }
11905
11905
  char *slab_ptr = ca->ptr + self_slab_offset;
11906
- uint64_t query_val = *(uint64_t *)(cv->ptr + val_offset);
11906
+ ca_u_uint64_t query_val = *(ca_u_uint64_t *)(cv->ptr + val_offset);
11907
11907
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
11908
11908
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
11909
11909
 
@@ -11918,7 +11918,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0)
11918
11918
  (void) query_eps; /* int data_type: exact match, eps ignored */
11919
11919
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
11920
11920
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
11921
- uint64_t v = *(uint64_t *)(slab_ptr + i * slab_stride);
11921
+ ca_u_uint64_t v = *(ca_u_uint64_t *)(slab_ptr + i * slab_stride);
11922
11922
  if ( v == query_val ) { result = i; break; }
11923
11923
  }
11924
11924
  }
@@ -11970,9 +11970,9 @@ search_ki_native_f32 (VALUE self, CArray *ca, VALUE rval, int axis, VALUE reps)
11970
11970
  if ( ca->ndim == 1 ) { return Qnil; }
11971
11971
  return voutu;
11972
11972
  }
11973
- float query_val_buf;
11973
+ ca_u_float32_t query_val_buf;
11974
11974
  rb_ca_obj2ptr(self, rval, &query_val_buf);
11975
- float query_val = query_val_buf;
11975
+ ca_u_float32_t query_val = query_val_buf;
11976
11976
  int eps_is_default = NIL_P(reps);
11977
11977
  double user_eps = eps_is_default ? 0.0 : NUM2DBL(reps);
11978
11978
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(FLT_EPSILON) * fabs((double)query_val) : 0.0) : user_eps;
@@ -12006,7 +12006,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(FL
12006
12006
  result = (ca_size_t) -1;
12007
12007
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
12008
12008
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
12009
- float v = *(float *)(slab_ptr + i * slab_stride);
12009
+ ca_u_float32_t v = *(ca_u_float32_t *)(slab_ptr + i * slab_stride);
12010
12010
  if ( v == query_val || fabs((double)(v - query_val)) <= query_eps ) { result = i; break; }
12011
12011
  }
12012
12012
  }
@@ -12243,7 +12243,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(FL
12243
12243
  val_offset += out_idx[k] * val_strides[k];
12244
12244
  }
12245
12245
  char *slab_ptr = ca->ptr + self_slab_offset;
12246
- float query_val = *(float *)(cv->ptr + val_offset);
12246
+ ca_u_float32_t query_val = *(ca_u_float32_t *)(cv->ptr + val_offset);
12247
12247
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
12248
12248
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(FLT_EPSILON) * fabs((double)query_val) : 0.0) : user_eps;
12249
12249
 
@@ -12257,7 +12257,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(FL
12257
12257
  result = (ca_size_t) -1;
12258
12258
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
12259
12259
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
12260
- float v = *(float *)(slab_ptr + i * slab_stride);
12260
+ ca_u_float32_t v = *(ca_u_float32_t *)(slab_ptr + i * slab_stride);
12261
12261
  if ( v == query_val || fabs((double)(v - query_val)) <= query_eps ) { result = i; break; }
12262
12262
  }
12263
12263
  }
@@ -12309,9 +12309,9 @@ search_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis, VALUE reps)
12309
12309
  if ( ca->ndim == 1 ) { return Qnil; }
12310
12310
  return voutu;
12311
12311
  }
12312
- double query_val_buf;
12312
+ ca_u_float64_t query_val_buf;
12313
12313
  rb_ca_obj2ptr(self, rval, &query_val_buf);
12314
- double query_val = query_val_buf;
12314
+ ca_u_float64_t query_val = query_val_buf;
12315
12315
  int eps_is_default = NIL_P(reps);
12316
12316
  double user_eps = eps_is_default ? 0.0 : NUM2DBL(reps);
12317
12317
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(DBL_EPSILON) * fabs((double)query_val) : 0.0) : user_eps;
@@ -12345,7 +12345,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(DB
12345
12345
  result = (ca_size_t) -1;
12346
12346
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
12347
12347
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
12348
- double v = *(double *)(slab_ptr + i * slab_stride);
12348
+ ca_u_float64_t v = *(ca_u_float64_t *)(slab_ptr + i * slab_stride);
12349
12349
  if ( v == query_val || fabs((double)(v - query_val)) <= query_eps ) { result = i; break; }
12350
12350
  }
12351
12351
  }
@@ -12582,7 +12582,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(DB
12582
12582
  val_offset += out_idx[k] * val_strides[k];
12583
12583
  }
12584
12584
  char *slab_ptr = ca->ptr + self_slab_offset;
12585
- double query_val = *(double *)(cv->ptr + val_offset);
12585
+ ca_u_float64_t query_val = *(ca_u_float64_t *)(cv->ptr + val_offset);
12586
12586
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
12587
12587
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(DBL_EPSILON) * fabs((double)query_val) : 0.0) : user_eps;
12588
12588
 
@@ -12596,7 +12596,7 @@ double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(DB
12596
12596
  result = (ca_size_t) -1;
12597
12597
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
12598
12598
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
12599
- double v = *(double *)(slab_ptr + i * slab_stride);
12599
+ ca_u_float64_t v = *(ca_u_float64_t *)(slab_ptr + i * slab_stride);
12600
12600
  if ( v == query_val || fabs((double)(v - query_val)) <= query_eps ) { result = i; break; }
12601
12601
  }
12602
12602
  }
@@ -14485,9 +14485,9 @@ search_nearest_ki_native_i16 (VALUE self, CArray *ca, VALUE rval, int axis)
14485
14485
  return voutu;
14486
14486
  }
14487
14487
  ca_check_integer_fits(rval, CA_INT16);
14488
- int16_t query_val_buf;
14488
+ ca_u_int16_t query_val_buf;
14489
14489
  rb_ca_obj2ptr(self, rval, &query_val_buf);
14490
- int16_t query_val = query_val_buf;
14490
+ ca_u_int16_t query_val = query_val_buf;
14491
14491
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
14492
14492
 
14493
14493
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -14522,7 +14522,7 @@ search_nearest_ki_native_i16 (VALUE self, CArray *ca, VALUE rval, int axis)
14522
14522
  uint64_t best_dist = 0;
14523
14523
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
14524
14524
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
14525
- int16_t v = *(int16_t *)(slab_ptr + i * slab_stride);
14525
+ ca_u_int16_t v = *(ca_u_int16_t *)(slab_ptr + i * slab_stride);
14526
14526
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
14527
14527
  : (uint64_t) query_val - (uint64_t) v;
14528
14528
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -14761,7 +14761,7 @@ search_nearest_ki_native_i16 (VALUE self, CArray *ca, VALUE rval, int axis)
14761
14761
  val_offset += out_idx[k] * val_strides[k];
14762
14762
  }
14763
14763
  char *slab_ptr = ca->ptr + self_slab_offset;
14764
- int16_t query_val = *(int16_t *)(cv->ptr + val_offset);
14764
+ ca_u_int16_t query_val = *(ca_u_int16_t *)(cv->ptr + val_offset);
14765
14765
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
14766
14766
  double query_eps = 0.0; (void) query_eps;
14767
14767
 
@@ -14778,7 +14778,7 @@ search_nearest_ki_native_i16 (VALUE self, CArray *ca, VALUE rval, int axis)
14778
14778
  uint64_t best_dist = 0;
14779
14779
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
14780
14780
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
14781
- int16_t v = *(int16_t *)(slab_ptr + i * slab_stride);
14781
+ ca_u_int16_t v = *(ca_u_int16_t *)(slab_ptr + i * slab_stride);
14782
14782
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
14783
14783
  : (uint64_t) query_val - (uint64_t) v;
14784
14784
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -14834,9 +14834,9 @@ search_nearest_ki_native_u16 (VALUE self, CArray *ca, VALUE rval, int axis)
14834
14834
  return voutu;
14835
14835
  }
14836
14836
  ca_check_integer_fits(rval, CA_UINT16);
14837
- uint16_t query_val_buf;
14837
+ ca_u_uint16_t query_val_buf;
14838
14838
  rb_ca_obj2ptr(self, rval, &query_val_buf);
14839
- uint16_t query_val = query_val_buf;
14839
+ ca_u_uint16_t query_val = query_val_buf;
14840
14840
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
14841
14841
 
14842
14842
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -14871,7 +14871,7 @@ search_nearest_ki_native_u16 (VALUE self, CArray *ca, VALUE rval, int axis)
14871
14871
  uint64_t best_dist = 0;
14872
14872
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
14873
14873
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
14874
- uint16_t v = *(uint16_t *)(slab_ptr + i * slab_stride);
14874
+ ca_u_uint16_t v = *(ca_u_uint16_t *)(slab_ptr + i * slab_stride);
14875
14875
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
14876
14876
  : (uint64_t) query_val - (uint64_t) v;
14877
14877
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -15110,7 +15110,7 @@ search_nearest_ki_native_u16 (VALUE self, CArray *ca, VALUE rval, int axis)
15110
15110
  val_offset += out_idx[k] * val_strides[k];
15111
15111
  }
15112
15112
  char *slab_ptr = ca->ptr + self_slab_offset;
15113
- uint16_t query_val = *(uint16_t *)(cv->ptr + val_offset);
15113
+ ca_u_uint16_t query_val = *(ca_u_uint16_t *)(cv->ptr + val_offset);
15114
15114
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
15115
15115
  double query_eps = 0.0; (void) query_eps;
15116
15116
 
@@ -15127,7 +15127,7 @@ search_nearest_ki_native_u16 (VALUE self, CArray *ca, VALUE rval, int axis)
15127
15127
  uint64_t best_dist = 0;
15128
15128
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
15129
15129
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
15130
- uint16_t v = *(uint16_t *)(slab_ptr + i * slab_stride);
15130
+ ca_u_uint16_t v = *(ca_u_uint16_t *)(slab_ptr + i * slab_stride);
15131
15131
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
15132
15132
  : (uint64_t) query_val - (uint64_t) v;
15133
15133
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -15183,9 +15183,9 @@ search_nearest_ki_native_i32 (VALUE self, CArray *ca, VALUE rval, int axis)
15183
15183
  return voutu;
15184
15184
  }
15185
15185
  ca_check_integer_fits(rval, CA_INT32);
15186
- int32_t query_val_buf;
15186
+ ca_u_int32_t query_val_buf;
15187
15187
  rb_ca_obj2ptr(self, rval, &query_val_buf);
15188
- int32_t query_val = query_val_buf;
15188
+ ca_u_int32_t query_val = query_val_buf;
15189
15189
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
15190
15190
 
15191
15191
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -15220,7 +15220,7 @@ search_nearest_ki_native_i32 (VALUE self, CArray *ca, VALUE rval, int axis)
15220
15220
  uint64_t best_dist = 0;
15221
15221
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
15222
15222
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
15223
- int32_t v = *(int32_t *)(slab_ptr + i * slab_stride);
15223
+ ca_u_int32_t v = *(ca_u_int32_t *)(slab_ptr + i * slab_stride);
15224
15224
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
15225
15225
  : (uint64_t) query_val - (uint64_t) v;
15226
15226
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -15459,7 +15459,7 @@ search_nearest_ki_native_i32 (VALUE self, CArray *ca, VALUE rval, int axis)
15459
15459
  val_offset += out_idx[k] * val_strides[k];
15460
15460
  }
15461
15461
  char *slab_ptr = ca->ptr + self_slab_offset;
15462
- int32_t query_val = *(int32_t *)(cv->ptr + val_offset);
15462
+ ca_u_int32_t query_val = *(ca_u_int32_t *)(cv->ptr + val_offset);
15463
15463
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
15464
15464
  double query_eps = 0.0; (void) query_eps;
15465
15465
 
@@ -15476,7 +15476,7 @@ search_nearest_ki_native_i32 (VALUE self, CArray *ca, VALUE rval, int axis)
15476
15476
  uint64_t best_dist = 0;
15477
15477
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
15478
15478
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
15479
- int32_t v = *(int32_t *)(slab_ptr + i * slab_stride);
15479
+ ca_u_int32_t v = *(ca_u_int32_t *)(slab_ptr + i * slab_stride);
15480
15480
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
15481
15481
  : (uint64_t) query_val - (uint64_t) v;
15482
15482
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -15532,9 +15532,9 @@ search_nearest_ki_native_u32 (VALUE self, CArray *ca, VALUE rval, int axis)
15532
15532
  return voutu;
15533
15533
  }
15534
15534
  ca_check_integer_fits(rval, CA_UINT32);
15535
- uint32_t query_val_buf;
15535
+ ca_u_uint32_t query_val_buf;
15536
15536
  rb_ca_obj2ptr(self, rval, &query_val_buf);
15537
- uint32_t query_val = query_val_buf;
15537
+ ca_u_uint32_t query_val = query_val_buf;
15538
15538
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
15539
15539
 
15540
15540
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -15569,7 +15569,7 @@ search_nearest_ki_native_u32 (VALUE self, CArray *ca, VALUE rval, int axis)
15569
15569
  uint64_t best_dist = 0;
15570
15570
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
15571
15571
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
15572
- uint32_t v = *(uint32_t *)(slab_ptr + i * slab_stride);
15572
+ ca_u_uint32_t v = *(ca_u_uint32_t *)(slab_ptr + i * slab_stride);
15573
15573
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
15574
15574
  : (uint64_t) query_val - (uint64_t) v;
15575
15575
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -15808,7 +15808,7 @@ search_nearest_ki_native_u32 (VALUE self, CArray *ca, VALUE rval, int axis)
15808
15808
  val_offset += out_idx[k] * val_strides[k];
15809
15809
  }
15810
15810
  char *slab_ptr = ca->ptr + self_slab_offset;
15811
- uint32_t query_val = *(uint32_t *)(cv->ptr + val_offset);
15811
+ ca_u_uint32_t query_val = *(ca_u_uint32_t *)(cv->ptr + val_offset);
15812
15812
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
15813
15813
  double query_eps = 0.0; (void) query_eps;
15814
15814
 
@@ -15825,7 +15825,7 @@ search_nearest_ki_native_u32 (VALUE self, CArray *ca, VALUE rval, int axis)
15825
15825
  uint64_t best_dist = 0;
15826
15826
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
15827
15827
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
15828
- uint32_t v = *(uint32_t *)(slab_ptr + i * slab_stride);
15828
+ ca_u_uint32_t v = *(ca_u_uint32_t *)(slab_ptr + i * slab_stride);
15829
15829
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
15830
15830
  : (uint64_t) query_val - (uint64_t) v;
15831
15831
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -15881,9 +15881,9 @@ search_nearest_ki_native_i64 (VALUE self, CArray *ca, VALUE rval, int axis)
15881
15881
  return voutu;
15882
15882
  }
15883
15883
  ca_check_integer_fits(rval, CA_INT64);
15884
- int64_t query_val_buf;
15884
+ ca_u_int64_t query_val_buf;
15885
15885
  rb_ca_obj2ptr(self, rval, &query_val_buf);
15886
- int64_t query_val = query_val_buf;
15886
+ ca_u_int64_t query_val = query_val_buf;
15887
15887
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
15888
15888
 
15889
15889
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -15918,7 +15918,7 @@ search_nearest_ki_native_i64 (VALUE self, CArray *ca, VALUE rval, int axis)
15918
15918
  uint64_t best_dist = 0;
15919
15919
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
15920
15920
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
15921
- int64_t v = *(int64_t *)(slab_ptr + i * slab_stride);
15921
+ ca_u_int64_t v = *(ca_u_int64_t *)(slab_ptr + i * slab_stride);
15922
15922
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
15923
15923
  : (uint64_t) query_val - (uint64_t) v;
15924
15924
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -16157,7 +16157,7 @@ search_nearest_ki_native_i64 (VALUE self, CArray *ca, VALUE rval, int axis)
16157
16157
  val_offset += out_idx[k] * val_strides[k];
16158
16158
  }
16159
16159
  char *slab_ptr = ca->ptr + self_slab_offset;
16160
- int64_t query_val = *(int64_t *)(cv->ptr + val_offset);
16160
+ ca_u_int64_t query_val = *(ca_u_int64_t *)(cv->ptr + val_offset);
16161
16161
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
16162
16162
  double query_eps = 0.0; (void) query_eps;
16163
16163
 
@@ -16174,7 +16174,7 @@ search_nearest_ki_native_i64 (VALUE self, CArray *ca, VALUE rval, int axis)
16174
16174
  uint64_t best_dist = 0;
16175
16175
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
16176
16176
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
16177
- int64_t v = *(int64_t *)(slab_ptr + i * slab_stride);
16177
+ ca_u_int64_t v = *(ca_u_int64_t *)(slab_ptr + i * slab_stride);
16178
16178
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
16179
16179
  : (uint64_t) query_val - (uint64_t) v;
16180
16180
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -16230,9 +16230,9 @@ search_nearest_ki_native_u64 (VALUE self, CArray *ca, VALUE rval, int axis)
16230
16230
  return voutu;
16231
16231
  }
16232
16232
  ca_check_integer_fits(rval, CA_UINT64);
16233
- uint64_t query_val_buf;
16233
+ ca_u_uint64_t query_val_buf;
16234
16234
  rb_ca_obj2ptr(self, rval, &query_val_buf);
16235
- uint64_t query_val = query_val_buf;
16235
+ ca_u_uint64_t query_val = query_val_buf;
16236
16236
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
16237
16237
 
16238
16238
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -16267,7 +16267,7 @@ search_nearest_ki_native_u64 (VALUE self, CArray *ca, VALUE rval, int axis)
16267
16267
  uint64_t best_dist = 0;
16268
16268
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
16269
16269
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
16270
- uint64_t v = *(uint64_t *)(slab_ptr + i * slab_stride);
16270
+ ca_u_uint64_t v = *(ca_u_uint64_t *)(slab_ptr + i * slab_stride);
16271
16271
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
16272
16272
  : (uint64_t) query_val - (uint64_t) v;
16273
16273
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -16506,7 +16506,7 @@ search_nearest_ki_native_u64 (VALUE self, CArray *ca, VALUE rval, int axis)
16506
16506
  val_offset += out_idx[k] * val_strides[k];
16507
16507
  }
16508
16508
  char *slab_ptr = ca->ptr + self_slab_offset;
16509
- uint64_t query_val = *(uint64_t *)(cv->ptr + val_offset);
16509
+ ca_u_uint64_t query_val = *(ca_u_uint64_t *)(cv->ptr + val_offset);
16510
16510
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
16511
16511
  double query_eps = 0.0; (void) query_eps;
16512
16512
 
@@ -16523,7 +16523,7 @@ search_nearest_ki_native_u64 (VALUE self, CArray *ca, VALUE rval, int axis)
16523
16523
  uint64_t best_dist = 0;
16524
16524
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
16525
16525
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
16526
- uint64_t v = *(uint64_t *)(slab_ptr + i * slab_stride);
16526
+ ca_u_uint64_t v = *(ca_u_uint64_t *)(slab_ptr + i * slab_stride);
16527
16527
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
16528
16528
  : (uint64_t) query_val - (uint64_t) v;
16529
16529
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -16578,9 +16578,9 @@ search_nearest_ki_native_f32 (VALUE self, CArray *ca, VALUE rval, int axis)
16578
16578
  if ( ca->ndim == 1 ) { return Qnil; }
16579
16579
  return voutu;
16580
16580
  }
16581
- float query_val_buf;
16581
+ ca_u_float32_t query_val_buf;
16582
16582
  rb_ca_obj2ptr(self, rval, &query_val_buf);
16583
- float query_val = query_val_buf;
16583
+ ca_u_float32_t query_val = query_val_buf;
16584
16584
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
16585
16585
 
16586
16586
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -16613,7 +16613,7 @@ search_nearest_ki_native_f32 (VALUE self, CArray *ca, VALUE rval, int axis)
16613
16613
  double best_dist = INFINITY;
16614
16614
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
16615
16615
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
16616
- float v = *(float *)(slab_ptr + i * slab_stride);
16616
+ ca_u_float32_t v = *(ca_u_float32_t *)(slab_ptr + i * slab_stride);
16617
16617
  /* An equal value is at distance 0 even when both are infinite
16618
16618
  (Inf - Inf is NaN); a NaN distance never wins. */
16619
16619
  double dist = ( v == query_val ) ? 0.0 : fabs((double)v - (double)query_val);
@@ -16854,7 +16854,7 @@ search_nearest_ki_native_f32 (VALUE self, CArray *ca, VALUE rval, int axis)
16854
16854
  val_offset += out_idx[k] * val_strides[k];
16855
16855
  }
16856
16856
  char *slab_ptr = ca->ptr + self_slab_offset;
16857
- float query_val = *(float *)(cv->ptr + val_offset);
16857
+ ca_u_float32_t query_val = *(ca_u_float32_t *)(cv->ptr + val_offset);
16858
16858
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
16859
16859
  double query_eps = 0.0; (void) query_eps;
16860
16860
 
@@ -16869,7 +16869,7 @@ search_nearest_ki_native_f32 (VALUE self, CArray *ca, VALUE rval, int axis)
16869
16869
  double best_dist = INFINITY;
16870
16870
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
16871
16871
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
16872
- float v = *(float *)(slab_ptr + i * slab_stride);
16872
+ ca_u_float32_t v = *(ca_u_float32_t *)(slab_ptr + i * slab_stride);
16873
16873
  /* An equal value is at distance 0 even when both are infinite
16874
16874
  (Inf - Inf is NaN); a NaN distance never wins. */
16875
16875
  double dist = ( v == query_val ) ? 0.0 : fabs((double)v - (double)query_val);
@@ -16926,9 +16926,9 @@ search_nearest_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
16926
16926
  if ( ca->ndim == 1 ) { return Qnil; }
16927
16927
  return voutu;
16928
16928
  }
16929
- double query_val_buf;
16929
+ ca_u_float64_t query_val_buf;
16930
16930
  rb_ca_obj2ptr(self, rval, &query_val_buf);
16931
- double query_val = query_val_buf;
16931
+ ca_u_float64_t query_val = query_val_buf;
16932
16932
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
16933
16933
 
16934
16934
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -16961,7 +16961,7 @@ search_nearest_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
16961
16961
  double best_dist = INFINITY;
16962
16962
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
16963
16963
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
16964
- double v = *(double *)(slab_ptr + i * slab_stride);
16964
+ ca_u_float64_t v = *(ca_u_float64_t *)(slab_ptr + i * slab_stride);
16965
16965
  /* An equal value is at distance 0 even when both are infinite
16966
16966
  (Inf - Inf is NaN); a NaN distance never wins. */
16967
16967
  double dist = ( v == query_val ) ? 0.0 : fabs((double)v - (double)query_val);
@@ -17202,7 +17202,7 @@ search_nearest_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
17202
17202
  val_offset += out_idx[k] * val_strides[k];
17203
17203
  }
17204
17204
  char *slab_ptr = ca->ptr + self_slab_offset;
17205
- double query_val = *(double *)(cv->ptr + val_offset);
17205
+ ca_u_float64_t query_val = *(ca_u_float64_t *)(cv->ptr + val_offset);
17206
17206
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
17207
17207
  double query_eps = 0.0; (void) query_eps;
17208
17208
 
@@ -17217,7 +17217,7 @@ search_nearest_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
17217
17217
  double best_dist = INFINITY;
17218
17218
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
17219
17219
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
17220
- double v = *(double *)(slab_ptr + i * slab_stride);
17220
+ ca_u_float64_t v = *(ca_u_float64_t *)(slab_ptr + i * slab_stride);
17221
17221
  /* An equal value is at distance 0 even when both are infinite
17222
17222
  (Inf - Inf is NaN); a NaN distance never wins. */
17223
17223
  double dist = ( v == query_val ) ? 0.0 : fabs((double)v - (double)query_val);
@@ -18864,9 +18864,9 @@ bsearch_addr_ki_native_i16 (VALUE self, CArray *ca, VALUE rval, int axis)
18864
18864
  return voutu;
18865
18865
  }
18866
18866
  ca_check_integer_fits(rval, CA_INT16);
18867
- int16_t query_val_buf;
18867
+ ca_u_int16_t query_val_buf;
18868
18868
  rb_ca_obj2ptr(self, rval, &query_val_buf);
18869
- int16_t query_val = query_val_buf;
18869
+ ca_u_int16_t query_val = query_val_buf;
18870
18870
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
18871
18871
 
18872
18872
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -18917,7 +18917,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
18917
18917
  ca_size_t hi = slab_n;
18918
18918
  while ( lo < hi ) {
18919
18919
  ca_size_t mid = lo + (hi - lo) / 2;
18920
- int16_t v = *(int16_t *)(slab_ptr + mid * slab_stride);
18920
+ ca_u_int16_t v = *(ca_u_int16_t *)(slab_ptr + mid * slab_stride);
18921
18921
  if ( v < query_val ) lo = mid + 1;
18922
18922
  else if ( v > query_val ) hi = mid;
18923
18923
  else { result = mid; break; }
@@ -19163,7 +19163,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
19163
19163
  val_offset += out_idx[k] * val_strides[k];
19164
19164
  }
19165
19165
  char *slab_ptr = ca->ptr + self_slab_offset;
19166
- int16_t query_val = *(int16_t *)(cv->ptr + val_offset);
19166
+ ca_u_int16_t query_val = *(ca_u_int16_t *)(cv->ptr + val_offset);
19167
19167
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
19168
19168
  double query_eps = 0.0; (void) query_eps;
19169
19169
  (void) mask_in;
@@ -19181,7 +19181,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
19181
19181
  ca_size_t hi = slab_n;
19182
19182
  while ( lo < hi ) {
19183
19183
  ca_size_t mid = lo + (hi - lo) / 2;
19184
- int16_t v = *(int16_t *)(slab_ptr + mid * slab_stride);
19184
+ ca_u_int16_t v = *(ca_u_int16_t *)(slab_ptr + mid * slab_stride);
19185
19185
  if ( v < query_val ) lo = mid + 1;
19186
19186
  else if ( v > query_val ) hi = mid;
19187
19187
  else { result = mid; break; }
@@ -19237,9 +19237,9 @@ bsearch_addr_ki_native_u16 (VALUE self, CArray *ca, VALUE rval, int axis)
19237
19237
  return voutu;
19238
19238
  }
19239
19239
  ca_check_integer_fits(rval, CA_UINT16);
19240
- uint16_t query_val_buf;
19240
+ ca_u_uint16_t query_val_buf;
19241
19241
  rb_ca_obj2ptr(self, rval, &query_val_buf);
19242
- uint16_t query_val = query_val_buf;
19242
+ ca_u_uint16_t query_val = query_val_buf;
19243
19243
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
19244
19244
 
19245
19245
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -19290,7 +19290,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
19290
19290
  ca_size_t hi = slab_n;
19291
19291
  while ( lo < hi ) {
19292
19292
  ca_size_t mid = lo + (hi - lo) / 2;
19293
- uint16_t v = *(uint16_t *)(slab_ptr + mid * slab_stride);
19293
+ ca_u_uint16_t v = *(ca_u_uint16_t *)(slab_ptr + mid * slab_stride);
19294
19294
  if ( v < query_val ) lo = mid + 1;
19295
19295
  else if ( v > query_val ) hi = mid;
19296
19296
  else { result = mid; break; }
@@ -19536,7 +19536,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
19536
19536
  val_offset += out_idx[k] * val_strides[k];
19537
19537
  }
19538
19538
  char *slab_ptr = ca->ptr + self_slab_offset;
19539
- uint16_t query_val = *(uint16_t *)(cv->ptr + val_offset);
19539
+ ca_u_uint16_t query_val = *(ca_u_uint16_t *)(cv->ptr + val_offset);
19540
19540
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
19541
19541
  double query_eps = 0.0; (void) query_eps;
19542
19542
  (void) mask_in;
@@ -19554,7 +19554,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
19554
19554
  ca_size_t hi = slab_n;
19555
19555
  while ( lo < hi ) {
19556
19556
  ca_size_t mid = lo + (hi - lo) / 2;
19557
- uint16_t v = *(uint16_t *)(slab_ptr + mid * slab_stride);
19557
+ ca_u_uint16_t v = *(ca_u_uint16_t *)(slab_ptr + mid * slab_stride);
19558
19558
  if ( v < query_val ) lo = mid + 1;
19559
19559
  else if ( v > query_val ) hi = mid;
19560
19560
  else { result = mid; break; }
@@ -19610,9 +19610,9 @@ bsearch_addr_ki_native_i32 (VALUE self, CArray *ca, VALUE rval, int axis)
19610
19610
  return voutu;
19611
19611
  }
19612
19612
  ca_check_integer_fits(rval, CA_INT32);
19613
- int32_t query_val_buf;
19613
+ ca_u_int32_t query_val_buf;
19614
19614
  rb_ca_obj2ptr(self, rval, &query_val_buf);
19615
- int32_t query_val = query_val_buf;
19615
+ ca_u_int32_t query_val = query_val_buf;
19616
19616
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
19617
19617
 
19618
19618
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -19663,7 +19663,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
19663
19663
  ca_size_t hi = slab_n;
19664
19664
  while ( lo < hi ) {
19665
19665
  ca_size_t mid = lo + (hi - lo) / 2;
19666
- int32_t v = *(int32_t *)(slab_ptr + mid * slab_stride);
19666
+ ca_u_int32_t v = *(ca_u_int32_t *)(slab_ptr + mid * slab_stride);
19667
19667
  if ( v < query_val ) lo = mid + 1;
19668
19668
  else if ( v > query_val ) hi = mid;
19669
19669
  else { result = mid; break; }
@@ -19909,7 +19909,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
19909
19909
  val_offset += out_idx[k] * val_strides[k];
19910
19910
  }
19911
19911
  char *slab_ptr = ca->ptr + self_slab_offset;
19912
- int32_t query_val = *(int32_t *)(cv->ptr + val_offset);
19912
+ ca_u_int32_t query_val = *(ca_u_int32_t *)(cv->ptr + val_offset);
19913
19913
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
19914
19914
  double query_eps = 0.0; (void) query_eps;
19915
19915
  (void) mask_in;
@@ -19927,7 +19927,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
19927
19927
  ca_size_t hi = slab_n;
19928
19928
  while ( lo < hi ) {
19929
19929
  ca_size_t mid = lo + (hi - lo) / 2;
19930
- int32_t v = *(int32_t *)(slab_ptr + mid * slab_stride);
19930
+ ca_u_int32_t v = *(ca_u_int32_t *)(slab_ptr + mid * slab_stride);
19931
19931
  if ( v < query_val ) lo = mid + 1;
19932
19932
  else if ( v > query_val ) hi = mid;
19933
19933
  else { result = mid; break; }
@@ -19983,9 +19983,9 @@ bsearch_addr_ki_native_u32 (VALUE self, CArray *ca, VALUE rval, int axis)
19983
19983
  return voutu;
19984
19984
  }
19985
19985
  ca_check_integer_fits(rval, CA_UINT32);
19986
- uint32_t query_val_buf;
19986
+ ca_u_uint32_t query_val_buf;
19987
19987
  rb_ca_obj2ptr(self, rval, &query_val_buf);
19988
- uint32_t query_val = query_val_buf;
19988
+ ca_u_uint32_t query_val = query_val_buf;
19989
19989
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
19990
19990
 
19991
19991
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -20036,7 +20036,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
20036
20036
  ca_size_t hi = slab_n;
20037
20037
  while ( lo < hi ) {
20038
20038
  ca_size_t mid = lo + (hi - lo) / 2;
20039
- uint32_t v = *(uint32_t *)(slab_ptr + mid * slab_stride);
20039
+ ca_u_uint32_t v = *(ca_u_uint32_t *)(slab_ptr + mid * slab_stride);
20040
20040
  if ( v < query_val ) lo = mid + 1;
20041
20041
  else if ( v > query_val ) hi = mid;
20042
20042
  else { result = mid; break; }
@@ -20282,7 +20282,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
20282
20282
  val_offset += out_idx[k] * val_strides[k];
20283
20283
  }
20284
20284
  char *slab_ptr = ca->ptr + self_slab_offset;
20285
- uint32_t query_val = *(uint32_t *)(cv->ptr + val_offset);
20285
+ ca_u_uint32_t query_val = *(ca_u_uint32_t *)(cv->ptr + val_offset);
20286
20286
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
20287
20287
  double query_eps = 0.0; (void) query_eps;
20288
20288
  (void) mask_in;
@@ -20300,7 +20300,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
20300
20300
  ca_size_t hi = slab_n;
20301
20301
  while ( lo < hi ) {
20302
20302
  ca_size_t mid = lo + (hi - lo) / 2;
20303
- uint32_t v = *(uint32_t *)(slab_ptr + mid * slab_stride);
20303
+ ca_u_uint32_t v = *(ca_u_uint32_t *)(slab_ptr + mid * slab_stride);
20304
20304
  if ( v < query_val ) lo = mid + 1;
20305
20305
  else if ( v > query_val ) hi = mid;
20306
20306
  else { result = mid; break; }
@@ -20356,9 +20356,9 @@ bsearch_addr_ki_native_i64 (VALUE self, CArray *ca, VALUE rval, int axis)
20356
20356
  return voutu;
20357
20357
  }
20358
20358
  ca_check_integer_fits(rval, CA_INT64);
20359
- int64_t query_val_buf;
20359
+ ca_u_int64_t query_val_buf;
20360
20360
  rb_ca_obj2ptr(self, rval, &query_val_buf);
20361
- int64_t query_val = query_val_buf;
20361
+ ca_u_int64_t query_val = query_val_buf;
20362
20362
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
20363
20363
 
20364
20364
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -20409,7 +20409,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
20409
20409
  ca_size_t hi = slab_n;
20410
20410
  while ( lo < hi ) {
20411
20411
  ca_size_t mid = lo + (hi - lo) / 2;
20412
- int64_t v = *(int64_t *)(slab_ptr + mid * slab_stride);
20412
+ ca_u_int64_t v = *(ca_u_int64_t *)(slab_ptr + mid * slab_stride);
20413
20413
  if ( v < query_val ) lo = mid + 1;
20414
20414
  else if ( v > query_val ) hi = mid;
20415
20415
  else { result = mid; break; }
@@ -20655,7 +20655,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
20655
20655
  val_offset += out_idx[k] * val_strides[k];
20656
20656
  }
20657
20657
  char *slab_ptr = ca->ptr + self_slab_offset;
20658
- int64_t query_val = *(int64_t *)(cv->ptr + val_offset);
20658
+ ca_u_int64_t query_val = *(ca_u_int64_t *)(cv->ptr + val_offset);
20659
20659
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
20660
20660
  double query_eps = 0.0; (void) query_eps;
20661
20661
  (void) mask_in;
@@ -20673,7 +20673,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
20673
20673
  ca_size_t hi = slab_n;
20674
20674
  while ( lo < hi ) {
20675
20675
  ca_size_t mid = lo + (hi - lo) / 2;
20676
- int64_t v = *(int64_t *)(slab_ptr + mid * slab_stride);
20676
+ ca_u_int64_t v = *(ca_u_int64_t *)(slab_ptr + mid * slab_stride);
20677
20677
  if ( v < query_val ) lo = mid + 1;
20678
20678
  else if ( v > query_val ) hi = mid;
20679
20679
  else { result = mid; break; }
@@ -20729,9 +20729,9 @@ bsearch_addr_ki_native_u64 (VALUE self, CArray *ca, VALUE rval, int axis)
20729
20729
  return voutu;
20730
20730
  }
20731
20731
  ca_check_integer_fits(rval, CA_UINT64);
20732
- uint64_t query_val_buf;
20732
+ ca_u_uint64_t query_val_buf;
20733
20733
  rb_ca_obj2ptr(self, rval, &query_val_buf);
20734
- uint64_t query_val = query_val_buf;
20734
+ ca_u_uint64_t query_val = query_val_buf;
20735
20735
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
20736
20736
 
20737
20737
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -20782,7 +20782,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
20782
20782
  ca_size_t hi = slab_n;
20783
20783
  while ( lo < hi ) {
20784
20784
  ca_size_t mid = lo + (hi - lo) / 2;
20785
- uint64_t v = *(uint64_t *)(slab_ptr + mid * slab_stride);
20785
+ ca_u_uint64_t v = *(ca_u_uint64_t *)(slab_ptr + mid * slab_stride);
20786
20786
  if ( v < query_val ) lo = mid + 1;
20787
20787
  else if ( v > query_val ) hi = mid;
20788
20788
  else { result = mid; break; }
@@ -21028,7 +21028,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
21028
21028
  val_offset += out_idx[k] * val_strides[k];
21029
21029
  }
21030
21030
  char *slab_ptr = ca->ptr + self_slab_offset;
21031
- uint64_t query_val = *(uint64_t *)(cv->ptr + val_offset);
21031
+ ca_u_uint64_t query_val = *(ca_u_uint64_t *)(cv->ptr + val_offset);
21032
21032
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
21033
21033
  double query_eps = 0.0; (void) query_eps;
21034
21034
  (void) mask_in;
@@ -21046,7 +21046,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
21046
21046
  ca_size_t hi = slab_n;
21047
21047
  while ( lo < hi ) {
21048
21048
  ca_size_t mid = lo + (hi - lo) / 2;
21049
- uint64_t v = *(uint64_t *)(slab_ptr + mid * slab_stride);
21049
+ ca_u_uint64_t v = *(ca_u_uint64_t *)(slab_ptr + mid * slab_stride);
21050
21050
  if ( v < query_val ) lo = mid + 1;
21051
21051
  else if ( v > query_val ) hi = mid;
21052
21052
  else { result = mid; break; }
@@ -21101,9 +21101,9 @@ bsearch_addr_ki_native_f32 (VALUE self, CArray *ca, VALUE rval, int axis)
21101
21101
  if ( ca->ndim == 1 ) { return Qnil; }
21102
21102
  return voutu;
21103
21103
  }
21104
- float query_val_buf;
21104
+ ca_u_float32_t query_val_buf;
21105
21105
  rb_ca_obj2ptr(self, rval, &query_val_buf);
21106
- float query_val = query_val_buf;
21106
+ ca_u_float32_t query_val = query_val_buf;
21107
21107
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
21108
21108
 
21109
21109
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -21154,7 +21154,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
21154
21154
  ca_size_t hi = slab_n;
21155
21155
  while ( lo < hi ) {
21156
21156
  ca_size_t mid = lo + (hi - lo) / 2;
21157
- float v = *(float *)(slab_ptr + mid * slab_stride);
21157
+ ca_u_float32_t v = *(ca_u_float32_t *)(slab_ptr + mid * slab_stride);
21158
21158
  int c = CA_FLOAT_ORDER_CMP(v, query_val);
21159
21159
  if ( c < 0 ) lo = mid + 1;
21160
21160
  else if ( c > 0 ) hi = mid;
@@ -21401,7 +21401,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
21401
21401
  val_offset += out_idx[k] * val_strides[k];
21402
21402
  }
21403
21403
  char *slab_ptr = ca->ptr + self_slab_offset;
21404
- float query_val = *(float *)(cv->ptr + val_offset);
21404
+ ca_u_float32_t query_val = *(ca_u_float32_t *)(cv->ptr + val_offset);
21405
21405
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
21406
21406
  double query_eps = 0.0; (void) query_eps;
21407
21407
  (void) mask_in;
@@ -21419,7 +21419,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
21419
21419
  ca_size_t hi = slab_n;
21420
21420
  while ( lo < hi ) {
21421
21421
  ca_size_t mid = lo + (hi - lo) / 2;
21422
- float v = *(float *)(slab_ptr + mid * slab_stride);
21422
+ ca_u_float32_t v = *(ca_u_float32_t *)(slab_ptr + mid * slab_stride);
21423
21423
  int c = CA_FLOAT_ORDER_CMP(v, query_val);
21424
21424
  if ( c < 0 ) lo = mid + 1;
21425
21425
  else if ( c > 0 ) hi = mid;
@@ -21475,9 +21475,9 @@ bsearch_addr_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
21475
21475
  if ( ca->ndim == 1 ) { return Qnil; }
21476
21476
  return voutu;
21477
21477
  }
21478
- double query_val_buf;
21478
+ ca_u_float64_t query_val_buf;
21479
21479
  rb_ca_obj2ptr(self, rval, &query_val_buf);
21480
- double query_val = query_val_buf;
21480
+ ca_u_float64_t query_val = query_val_buf;
21481
21481
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
21482
21482
 
21483
21483
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -21528,7 +21528,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
21528
21528
  ca_size_t hi = slab_n;
21529
21529
  while ( lo < hi ) {
21530
21530
  ca_size_t mid = lo + (hi - lo) / 2;
21531
- double v = *(double *)(slab_ptr + mid * slab_stride);
21531
+ ca_u_float64_t v = *(ca_u_float64_t *)(slab_ptr + mid * slab_stride);
21532
21532
  int c = CA_FLOAT_ORDER_CMP(v, query_val);
21533
21533
  if ( c < 0 ) lo = mid + 1;
21534
21534
  else if ( c > 0 ) hi = mid;
@@ -21775,7 +21775,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
21775
21775
  val_offset += out_idx[k] * val_strides[k];
21776
21776
  }
21777
21777
  char *slab_ptr = ca->ptr + self_slab_offset;
21778
- double query_val = *(double *)(cv->ptr + val_offset);
21778
+ ca_u_float64_t query_val = *(ca_u_float64_t *)(cv->ptr + val_offset);
21779
21779
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
21780
21780
  double query_eps = 0.0; (void) query_eps;
21781
21781
  (void) mask_in;
@@ -21793,7 +21793,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
21793
21793
  ca_size_t hi = slab_n;
21794
21794
  while ( lo < hi ) {
21795
21795
  ca_size_t mid = lo + (hi - lo) / 2;
21796
- double v = *(double *)(slab_ptr + mid * slab_stride);
21796
+ ca_u_float64_t v = *(ca_u_float64_t *)(slab_ptr + mid * slab_stride);
21797
21797
  int c = CA_FLOAT_ORDER_CMP(v, query_val);
21798
21798
  if ( c < 0 ) lo = mid + 1;
21799
21799
  else if ( c > 0 ) hi = mid;
@@ -23799,9 +23799,9 @@ search_addr_ki_native_i16 (VALUE self, CArray *ca, VALUE rval, int axis, VALUE r
23799
23799
  return voutu;
23800
23800
  }
23801
23801
  ca_check_integer_fits(rval, CA_INT16);
23802
- int16_t query_val_buf;
23802
+ ca_u_int16_t query_val_buf;
23803
23803
  rb_ca_obj2ptr(self, rval, &query_val_buf);
23804
- int16_t query_val = query_val_buf;
23804
+ ca_u_int16_t query_val = query_val_buf;
23805
23805
  int eps_is_default = NIL_P(reps);
23806
23806
  double user_eps = eps_is_default ? 0.0 : NUM2DBL(reps);
23807
23807
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
@@ -23851,7 +23851,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
23851
23851
  (void) query_eps;
23852
23852
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
23853
23853
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
23854
- int16_t v = *(int16_t *)(slab_ptr + i * slab_stride);
23854
+ ca_u_int16_t v = *(ca_u_int16_t *)(slab_ptr + i * slab_stride);
23855
23855
  if ( v == query_val ) { result = i; break; }
23856
23856
  }
23857
23857
  }
@@ -24095,7 +24095,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
24095
24095
  val_offset += out_idx[k] * val_strides[k];
24096
24096
  }
24097
24097
  char *slab_ptr = ca->ptr + self_slab_offset;
24098
- int16_t query_val = *(int16_t *)(cv->ptr + val_offset);
24098
+ ca_u_int16_t query_val = *(ca_u_int16_t *)(cv->ptr + val_offset);
24099
24099
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
24100
24100
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
24101
24101
 
@@ -24110,7 +24110,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
24110
24110
  (void) query_eps;
24111
24111
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
24112
24112
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
24113
- int16_t v = *(int16_t *)(slab_ptr + i * slab_stride);
24113
+ ca_u_int16_t v = *(ca_u_int16_t *)(slab_ptr + i * slab_stride);
24114
24114
  if ( v == query_val ) { result = i; break; }
24115
24115
  }
24116
24116
  }
@@ -24163,9 +24163,9 @@ search_addr_ki_native_u16 (VALUE self, CArray *ca, VALUE rval, int axis, VALUE r
24163
24163
  return voutu;
24164
24164
  }
24165
24165
  ca_check_integer_fits(rval, CA_UINT16);
24166
- uint16_t query_val_buf;
24166
+ ca_u_uint16_t query_val_buf;
24167
24167
  rb_ca_obj2ptr(self, rval, &query_val_buf);
24168
- uint16_t query_val = query_val_buf;
24168
+ ca_u_uint16_t query_val = query_val_buf;
24169
24169
  int eps_is_default = NIL_P(reps);
24170
24170
  double user_eps = eps_is_default ? 0.0 : NUM2DBL(reps);
24171
24171
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
@@ -24215,7 +24215,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
24215
24215
  (void) query_eps;
24216
24216
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
24217
24217
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
24218
- uint16_t v = *(uint16_t *)(slab_ptr + i * slab_stride);
24218
+ ca_u_uint16_t v = *(ca_u_uint16_t *)(slab_ptr + i * slab_stride);
24219
24219
  if ( v == query_val ) { result = i; break; }
24220
24220
  }
24221
24221
  }
@@ -24459,7 +24459,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
24459
24459
  val_offset += out_idx[k] * val_strides[k];
24460
24460
  }
24461
24461
  char *slab_ptr = ca->ptr + self_slab_offset;
24462
- uint16_t query_val = *(uint16_t *)(cv->ptr + val_offset);
24462
+ ca_u_uint16_t query_val = *(ca_u_uint16_t *)(cv->ptr + val_offset);
24463
24463
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
24464
24464
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
24465
24465
 
@@ -24474,7 +24474,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
24474
24474
  (void) query_eps;
24475
24475
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
24476
24476
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
24477
- uint16_t v = *(uint16_t *)(slab_ptr + i * slab_stride);
24477
+ ca_u_uint16_t v = *(ca_u_uint16_t *)(slab_ptr + i * slab_stride);
24478
24478
  if ( v == query_val ) { result = i; break; }
24479
24479
  }
24480
24480
  }
@@ -24527,9 +24527,9 @@ search_addr_ki_native_i32 (VALUE self, CArray *ca, VALUE rval, int axis, VALUE r
24527
24527
  return voutu;
24528
24528
  }
24529
24529
  ca_check_integer_fits(rval, CA_INT32);
24530
- int32_t query_val_buf;
24530
+ ca_u_int32_t query_val_buf;
24531
24531
  rb_ca_obj2ptr(self, rval, &query_val_buf);
24532
- int32_t query_val = query_val_buf;
24532
+ ca_u_int32_t query_val = query_val_buf;
24533
24533
  int eps_is_default = NIL_P(reps);
24534
24534
  double user_eps = eps_is_default ? 0.0 : NUM2DBL(reps);
24535
24535
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
@@ -24579,7 +24579,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
24579
24579
  (void) query_eps;
24580
24580
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
24581
24581
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
24582
- int32_t v = *(int32_t *)(slab_ptr + i * slab_stride);
24582
+ ca_u_int32_t v = *(ca_u_int32_t *)(slab_ptr + i * slab_stride);
24583
24583
  if ( v == query_val ) { result = i; break; }
24584
24584
  }
24585
24585
  }
@@ -24823,7 +24823,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
24823
24823
  val_offset += out_idx[k] * val_strides[k];
24824
24824
  }
24825
24825
  char *slab_ptr = ca->ptr + self_slab_offset;
24826
- int32_t query_val = *(int32_t *)(cv->ptr + val_offset);
24826
+ ca_u_int32_t query_val = *(ca_u_int32_t *)(cv->ptr + val_offset);
24827
24827
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
24828
24828
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
24829
24829
 
@@ -24838,7 +24838,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
24838
24838
  (void) query_eps;
24839
24839
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
24840
24840
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
24841
- int32_t v = *(int32_t *)(slab_ptr + i * slab_stride);
24841
+ ca_u_int32_t v = *(ca_u_int32_t *)(slab_ptr + i * slab_stride);
24842
24842
  if ( v == query_val ) { result = i; break; }
24843
24843
  }
24844
24844
  }
@@ -24891,9 +24891,9 @@ search_addr_ki_native_u32 (VALUE self, CArray *ca, VALUE rval, int axis, VALUE r
24891
24891
  return voutu;
24892
24892
  }
24893
24893
  ca_check_integer_fits(rval, CA_UINT32);
24894
- uint32_t query_val_buf;
24894
+ ca_u_uint32_t query_val_buf;
24895
24895
  rb_ca_obj2ptr(self, rval, &query_val_buf);
24896
- uint32_t query_val = query_val_buf;
24896
+ ca_u_uint32_t query_val = query_val_buf;
24897
24897
  int eps_is_default = NIL_P(reps);
24898
24898
  double user_eps = eps_is_default ? 0.0 : NUM2DBL(reps);
24899
24899
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
@@ -24943,7 +24943,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
24943
24943
  (void) query_eps;
24944
24944
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
24945
24945
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
24946
- uint32_t v = *(uint32_t *)(slab_ptr + i * slab_stride);
24946
+ ca_u_uint32_t v = *(ca_u_uint32_t *)(slab_ptr + i * slab_stride);
24947
24947
  if ( v == query_val ) { result = i; break; }
24948
24948
  }
24949
24949
  }
@@ -25187,7 +25187,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
25187
25187
  val_offset += out_idx[k] * val_strides[k];
25188
25188
  }
25189
25189
  char *slab_ptr = ca->ptr + self_slab_offset;
25190
- uint32_t query_val = *(uint32_t *)(cv->ptr + val_offset);
25190
+ ca_u_uint32_t query_val = *(ca_u_uint32_t *)(cv->ptr + val_offset);
25191
25191
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
25192
25192
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
25193
25193
 
@@ -25202,7 +25202,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
25202
25202
  (void) query_eps;
25203
25203
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
25204
25204
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
25205
- uint32_t v = *(uint32_t *)(slab_ptr + i * slab_stride);
25205
+ ca_u_uint32_t v = *(ca_u_uint32_t *)(slab_ptr + i * slab_stride);
25206
25206
  if ( v == query_val ) { result = i; break; }
25207
25207
  }
25208
25208
  }
@@ -25255,9 +25255,9 @@ search_addr_ki_native_i64 (VALUE self, CArray *ca, VALUE rval, int axis, VALUE r
25255
25255
  return voutu;
25256
25256
  }
25257
25257
  ca_check_integer_fits(rval, CA_INT64);
25258
- int64_t query_val_buf;
25258
+ ca_u_int64_t query_val_buf;
25259
25259
  rb_ca_obj2ptr(self, rval, &query_val_buf);
25260
- int64_t query_val = query_val_buf;
25260
+ ca_u_int64_t query_val = query_val_buf;
25261
25261
  int eps_is_default = NIL_P(reps);
25262
25262
  double user_eps = eps_is_default ? 0.0 : NUM2DBL(reps);
25263
25263
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
@@ -25307,7 +25307,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
25307
25307
  (void) query_eps;
25308
25308
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
25309
25309
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
25310
- int64_t v = *(int64_t *)(slab_ptr + i * slab_stride);
25310
+ ca_u_int64_t v = *(ca_u_int64_t *)(slab_ptr + i * slab_stride);
25311
25311
  if ( v == query_val ) { result = i; break; }
25312
25312
  }
25313
25313
  }
@@ -25551,7 +25551,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
25551
25551
  val_offset += out_idx[k] * val_strides[k];
25552
25552
  }
25553
25553
  char *slab_ptr = ca->ptr + self_slab_offset;
25554
- int64_t query_val = *(int64_t *)(cv->ptr + val_offset);
25554
+ ca_u_int64_t query_val = *(ca_u_int64_t *)(cv->ptr + val_offset);
25555
25555
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
25556
25556
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
25557
25557
 
@@ -25566,7 +25566,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
25566
25566
  (void) query_eps;
25567
25567
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
25568
25568
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
25569
- int64_t v = *(int64_t *)(slab_ptr + i * slab_stride);
25569
+ ca_u_int64_t v = *(ca_u_int64_t *)(slab_ptr + i * slab_stride);
25570
25570
  if ( v == query_val ) { result = i; break; }
25571
25571
  }
25572
25572
  }
@@ -25619,9 +25619,9 @@ search_addr_ki_native_u64 (VALUE self, CArray *ca, VALUE rval, int axis, VALUE r
25619
25619
  return voutu;
25620
25620
  }
25621
25621
  ca_check_integer_fits(rval, CA_UINT64);
25622
- uint64_t query_val_buf;
25622
+ ca_u_uint64_t query_val_buf;
25623
25623
  rb_ca_obj2ptr(self, rval, &query_val_buf);
25624
- uint64_t query_val = query_val_buf;
25624
+ ca_u_uint64_t query_val = query_val_buf;
25625
25625
  int eps_is_default = NIL_P(reps);
25626
25626
  double user_eps = eps_is_default ? 0.0 : NUM2DBL(reps);
25627
25627
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
@@ -25671,7 +25671,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
25671
25671
  (void) query_eps;
25672
25672
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
25673
25673
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
25674
- uint64_t v = *(uint64_t *)(slab_ptr + i * slab_stride);
25674
+ ca_u_uint64_t v = *(ca_u_uint64_t *)(slab_ptr + i * slab_stride);
25675
25675
  if ( v == query_val ) { result = i; break; }
25676
25676
  }
25677
25677
  }
@@ -25915,7 +25915,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
25915
25915
  val_offset += out_idx[k] * val_strides[k];
25916
25916
  }
25917
25917
  char *slab_ptr = ca->ptr + self_slab_offset;
25918
- uint64_t query_val = *(uint64_t *)(cv->ptr + val_offset);
25918
+ ca_u_uint64_t query_val = *(ca_u_uint64_t *)(cv->ptr + val_offset);
25919
25919
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
25920
25920
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(0) * fabs((double)query_val) : 0.0) : user_eps;
25921
25921
 
@@ -25930,7 +25930,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
25930
25930
  (void) query_eps;
25931
25931
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
25932
25932
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
25933
- uint64_t v = *(uint64_t *)(slab_ptr + i * slab_stride);
25933
+ ca_u_uint64_t v = *(ca_u_uint64_t *)(slab_ptr + i * slab_stride);
25934
25934
  if ( v == query_val ) { result = i; break; }
25935
25935
  }
25936
25936
  }
@@ -25982,9 +25982,9 @@ search_addr_ki_native_f32 (VALUE self, CArray *ca, VALUE rval, int axis, VALUE r
25982
25982
  if ( ca->ndim == 1 ) { return Qnil; }
25983
25983
  return voutu;
25984
25984
  }
25985
- float query_val_buf;
25985
+ ca_u_float32_t query_val_buf;
25986
25986
  rb_ca_obj2ptr(self, rval, &query_val_buf);
25987
- float query_val = query_val_buf;
25987
+ ca_u_float32_t query_val = query_val_buf;
25988
25988
  int eps_is_default = NIL_P(reps);
25989
25989
  double user_eps = eps_is_default ? 0.0 : NUM2DBL(reps);
25990
25990
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(FLT_EPSILON) * fabs((double)query_val) : 0.0) : user_eps;
@@ -26033,7 +26033,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
26033
26033
  result = (ca_size_t) -1;
26034
26034
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
26035
26035
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
26036
- float v = *(float *)(slab_ptr + i * slab_stride);
26036
+ ca_u_float32_t v = *(ca_u_float32_t *)(slab_ptr + i * slab_stride);
26037
26037
  if ( v == query_val || fabs((double)v - (double)query_val) <= query_eps ) { result = i; break; }
26038
26038
  }
26039
26039
  }
@@ -26277,7 +26277,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
26277
26277
  val_offset += out_idx[k] * val_strides[k];
26278
26278
  }
26279
26279
  char *slab_ptr = ca->ptr + self_slab_offset;
26280
- float query_val = *(float *)(cv->ptr + val_offset);
26280
+ ca_u_float32_t query_val = *(ca_u_float32_t *)(cv->ptr + val_offset);
26281
26281
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
26282
26282
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(FLT_EPSILON) * fabs((double)query_val) : 0.0) : user_eps;
26283
26283
 
@@ -26291,7 +26291,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
26291
26291
  result = (ca_size_t) -1;
26292
26292
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
26293
26293
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
26294
- float v = *(float *)(slab_ptr + i * slab_stride);
26294
+ ca_u_float32_t v = *(ca_u_float32_t *)(slab_ptr + i * slab_stride);
26295
26295
  if ( v == query_val || fabs((double)v - (double)query_val) <= query_eps ) { result = i; break; }
26296
26296
  }
26297
26297
  }
@@ -26343,9 +26343,9 @@ search_addr_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis, VALUE r
26343
26343
  if ( ca->ndim == 1 ) { return Qnil; }
26344
26344
  return voutu;
26345
26345
  }
26346
- double query_val_buf;
26346
+ ca_u_float64_t query_val_buf;
26347
26347
  rb_ca_obj2ptr(self, rval, &query_val_buf);
26348
- double query_val = query_val_buf;
26348
+ ca_u_float64_t query_val = query_val_buf;
26349
26349
  int eps_is_default = NIL_P(reps);
26350
26350
  double user_eps = eps_is_default ? 0.0 : NUM2DBL(reps);
26351
26351
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(DBL_EPSILON) * fabs((double)query_val) : 0.0) : user_eps;
@@ -26394,7 +26394,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
26394
26394
  result = (ca_size_t) -1;
26395
26395
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
26396
26396
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
26397
- double v = *(double *)(slab_ptr + i * slab_stride);
26397
+ ca_u_float64_t v = *(ca_u_float64_t *)(slab_ptr + i * slab_stride);
26398
26398
  if ( v == query_val || fabs((double)v - (double)query_val) <= query_eps ) { result = i; break; }
26399
26399
  }
26400
26400
  }
@@ -26638,7 +26638,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
26638
26638
  val_offset += out_idx[k] * val_strides[k];
26639
26639
  }
26640
26640
  char *slab_ptr = ca->ptr + self_slab_offset;
26641
- double query_val = *(double *)(cv->ptr + val_offset);
26641
+ ca_u_float64_t query_val = *(ca_u_float64_t *)(cv->ptr + val_offset);
26642
26642
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
26643
26643
  double query_eps = eps_is_default ? (isfinite((double)query_val) ? (double)(DBL_EPSILON) * fabs((double)query_val) : 0.0) : user_eps;
26644
26644
 
@@ -26652,7 +26652,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
26652
26652
  result = (ca_size_t) -1;
26653
26653
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
26654
26654
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
26655
- double v = *(double *)(slab_ptr + i * slab_stride);
26655
+ ca_u_float64_t v = *(ca_u_float64_t *)(slab_ptr + i * slab_stride);
26656
26656
  if ( v == query_val || fabs((double)v - (double)query_val) <= query_eps ) { result = i; break; }
26657
26657
  }
26658
26658
  }
@@ -28645,9 +28645,9 @@ search_nearest_addr_ki_native_i16 (VALUE self, CArray *ca, VALUE rval, int axis)
28645
28645
  return voutu;
28646
28646
  }
28647
28647
  ca_check_integer_fits(rval, CA_INT16);
28648
- int16_t query_val_buf;
28648
+ ca_u_int16_t query_val_buf;
28649
28649
  rb_ca_obj2ptr(self, rval, &query_val_buf);
28650
- int16_t query_val = query_val_buf;
28650
+ ca_u_int16_t query_val = query_val_buf;
28651
28651
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
28652
28652
 
28653
28653
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -28697,7 +28697,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
28697
28697
  uint64_t best_dist = 0;
28698
28698
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
28699
28699
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
28700
- int16_t v = *(int16_t *)(slab_ptr + i * slab_stride);
28700
+ ca_u_int16_t v = *(ca_u_int16_t *)(slab_ptr + i * slab_stride);
28701
28701
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
28702
28702
  : (uint64_t) query_val - (uint64_t) v;
28703
28703
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -28943,7 +28943,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
28943
28943
  val_offset += out_idx[k] * val_strides[k];
28944
28944
  }
28945
28945
  char *slab_ptr = ca->ptr + self_slab_offset;
28946
- int16_t query_val = *(int16_t *)(cv->ptr + val_offset);
28946
+ ca_u_int16_t query_val = *(ca_u_int16_t *)(cv->ptr + val_offset);
28947
28947
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
28948
28948
  double query_eps = 0.0; (void) query_eps;
28949
28949
 
@@ -28960,7 +28960,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
28960
28960
  uint64_t best_dist = 0;
28961
28961
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
28962
28962
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
28963
- int16_t v = *(int16_t *)(slab_ptr + i * slab_stride);
28963
+ ca_u_int16_t v = *(ca_u_int16_t *)(slab_ptr + i * slab_stride);
28964
28964
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
28965
28965
  : (uint64_t) query_val - (uint64_t) v;
28966
28966
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -29016,9 +29016,9 @@ search_nearest_addr_ki_native_u16 (VALUE self, CArray *ca, VALUE rval, int axis)
29016
29016
  return voutu;
29017
29017
  }
29018
29018
  ca_check_integer_fits(rval, CA_UINT16);
29019
- uint16_t query_val_buf;
29019
+ ca_u_uint16_t query_val_buf;
29020
29020
  rb_ca_obj2ptr(self, rval, &query_val_buf);
29021
- uint16_t query_val = query_val_buf;
29021
+ ca_u_uint16_t query_val = query_val_buf;
29022
29022
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
29023
29023
 
29024
29024
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -29068,7 +29068,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
29068
29068
  uint64_t best_dist = 0;
29069
29069
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
29070
29070
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
29071
- uint16_t v = *(uint16_t *)(slab_ptr + i * slab_stride);
29071
+ ca_u_uint16_t v = *(ca_u_uint16_t *)(slab_ptr + i * slab_stride);
29072
29072
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
29073
29073
  : (uint64_t) query_val - (uint64_t) v;
29074
29074
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -29314,7 +29314,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
29314
29314
  val_offset += out_idx[k] * val_strides[k];
29315
29315
  }
29316
29316
  char *slab_ptr = ca->ptr + self_slab_offset;
29317
- uint16_t query_val = *(uint16_t *)(cv->ptr + val_offset);
29317
+ ca_u_uint16_t query_val = *(ca_u_uint16_t *)(cv->ptr + val_offset);
29318
29318
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
29319
29319
  double query_eps = 0.0; (void) query_eps;
29320
29320
 
@@ -29331,7 +29331,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
29331
29331
  uint64_t best_dist = 0;
29332
29332
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
29333
29333
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
29334
- uint16_t v = *(uint16_t *)(slab_ptr + i * slab_stride);
29334
+ ca_u_uint16_t v = *(ca_u_uint16_t *)(slab_ptr + i * slab_stride);
29335
29335
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
29336
29336
  : (uint64_t) query_val - (uint64_t) v;
29337
29337
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -29387,9 +29387,9 @@ search_nearest_addr_ki_native_i32 (VALUE self, CArray *ca, VALUE rval, int axis)
29387
29387
  return voutu;
29388
29388
  }
29389
29389
  ca_check_integer_fits(rval, CA_INT32);
29390
- int32_t query_val_buf;
29390
+ ca_u_int32_t query_val_buf;
29391
29391
  rb_ca_obj2ptr(self, rval, &query_val_buf);
29392
- int32_t query_val = query_val_buf;
29392
+ ca_u_int32_t query_val = query_val_buf;
29393
29393
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
29394
29394
 
29395
29395
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -29439,7 +29439,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
29439
29439
  uint64_t best_dist = 0;
29440
29440
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
29441
29441
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
29442
- int32_t v = *(int32_t *)(slab_ptr + i * slab_stride);
29442
+ ca_u_int32_t v = *(ca_u_int32_t *)(slab_ptr + i * slab_stride);
29443
29443
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
29444
29444
  : (uint64_t) query_val - (uint64_t) v;
29445
29445
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -29685,7 +29685,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
29685
29685
  val_offset += out_idx[k] * val_strides[k];
29686
29686
  }
29687
29687
  char *slab_ptr = ca->ptr + self_slab_offset;
29688
- int32_t query_val = *(int32_t *)(cv->ptr + val_offset);
29688
+ ca_u_int32_t query_val = *(ca_u_int32_t *)(cv->ptr + val_offset);
29689
29689
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
29690
29690
  double query_eps = 0.0; (void) query_eps;
29691
29691
 
@@ -29702,7 +29702,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
29702
29702
  uint64_t best_dist = 0;
29703
29703
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
29704
29704
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
29705
- int32_t v = *(int32_t *)(slab_ptr + i * slab_stride);
29705
+ ca_u_int32_t v = *(ca_u_int32_t *)(slab_ptr + i * slab_stride);
29706
29706
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
29707
29707
  : (uint64_t) query_val - (uint64_t) v;
29708
29708
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -29758,9 +29758,9 @@ search_nearest_addr_ki_native_u32 (VALUE self, CArray *ca, VALUE rval, int axis)
29758
29758
  return voutu;
29759
29759
  }
29760
29760
  ca_check_integer_fits(rval, CA_UINT32);
29761
- uint32_t query_val_buf;
29761
+ ca_u_uint32_t query_val_buf;
29762
29762
  rb_ca_obj2ptr(self, rval, &query_val_buf);
29763
- uint32_t query_val = query_val_buf;
29763
+ ca_u_uint32_t query_val = query_val_buf;
29764
29764
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
29765
29765
 
29766
29766
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -29810,7 +29810,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
29810
29810
  uint64_t best_dist = 0;
29811
29811
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
29812
29812
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
29813
- uint32_t v = *(uint32_t *)(slab_ptr + i * slab_stride);
29813
+ ca_u_uint32_t v = *(ca_u_uint32_t *)(slab_ptr + i * slab_stride);
29814
29814
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
29815
29815
  : (uint64_t) query_val - (uint64_t) v;
29816
29816
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -30056,7 +30056,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
30056
30056
  val_offset += out_idx[k] * val_strides[k];
30057
30057
  }
30058
30058
  char *slab_ptr = ca->ptr + self_slab_offset;
30059
- uint32_t query_val = *(uint32_t *)(cv->ptr + val_offset);
30059
+ ca_u_uint32_t query_val = *(ca_u_uint32_t *)(cv->ptr + val_offset);
30060
30060
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
30061
30061
  double query_eps = 0.0; (void) query_eps;
30062
30062
 
@@ -30073,7 +30073,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
30073
30073
  uint64_t best_dist = 0;
30074
30074
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
30075
30075
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
30076
- uint32_t v = *(uint32_t *)(slab_ptr + i * slab_stride);
30076
+ ca_u_uint32_t v = *(ca_u_uint32_t *)(slab_ptr + i * slab_stride);
30077
30077
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
30078
30078
  : (uint64_t) query_val - (uint64_t) v;
30079
30079
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -30129,9 +30129,9 @@ search_nearest_addr_ki_native_i64 (VALUE self, CArray *ca, VALUE rval, int axis)
30129
30129
  return voutu;
30130
30130
  }
30131
30131
  ca_check_integer_fits(rval, CA_INT64);
30132
- int64_t query_val_buf;
30132
+ ca_u_int64_t query_val_buf;
30133
30133
  rb_ca_obj2ptr(self, rval, &query_val_buf);
30134
- int64_t query_val = query_val_buf;
30134
+ ca_u_int64_t query_val = query_val_buf;
30135
30135
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
30136
30136
 
30137
30137
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -30181,7 +30181,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
30181
30181
  uint64_t best_dist = 0;
30182
30182
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
30183
30183
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
30184
- int64_t v = *(int64_t *)(slab_ptr + i * slab_stride);
30184
+ ca_u_int64_t v = *(ca_u_int64_t *)(slab_ptr + i * slab_stride);
30185
30185
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
30186
30186
  : (uint64_t) query_val - (uint64_t) v;
30187
30187
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -30427,7 +30427,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
30427
30427
  val_offset += out_idx[k] * val_strides[k];
30428
30428
  }
30429
30429
  char *slab_ptr = ca->ptr + self_slab_offset;
30430
- int64_t query_val = *(int64_t *)(cv->ptr + val_offset);
30430
+ ca_u_int64_t query_val = *(ca_u_int64_t *)(cv->ptr + val_offset);
30431
30431
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
30432
30432
  double query_eps = 0.0; (void) query_eps;
30433
30433
 
@@ -30444,7 +30444,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
30444
30444
  uint64_t best_dist = 0;
30445
30445
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
30446
30446
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
30447
- int64_t v = *(int64_t *)(slab_ptr + i * slab_stride);
30447
+ ca_u_int64_t v = *(ca_u_int64_t *)(slab_ptr + i * slab_stride);
30448
30448
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
30449
30449
  : (uint64_t) query_val - (uint64_t) v;
30450
30450
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -30500,9 +30500,9 @@ search_nearest_addr_ki_native_u64 (VALUE self, CArray *ca, VALUE rval, int axis)
30500
30500
  return voutu;
30501
30501
  }
30502
30502
  ca_check_integer_fits(rval, CA_UINT64);
30503
- uint64_t query_val_buf;
30503
+ ca_u_uint64_t query_val_buf;
30504
30504
  rb_ca_obj2ptr(self, rval, &query_val_buf);
30505
- uint64_t query_val = query_val_buf;
30505
+ ca_u_uint64_t query_val = query_val_buf;
30506
30506
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
30507
30507
 
30508
30508
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -30552,7 +30552,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
30552
30552
  uint64_t best_dist = 0;
30553
30553
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
30554
30554
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
30555
- uint64_t v = *(uint64_t *)(slab_ptr + i * slab_stride);
30555
+ ca_u_uint64_t v = *(ca_u_uint64_t *)(slab_ptr + i * slab_stride);
30556
30556
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
30557
30557
  : (uint64_t) query_val - (uint64_t) v;
30558
30558
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -30798,7 +30798,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
30798
30798
  val_offset += out_idx[k] * val_strides[k];
30799
30799
  }
30800
30800
  char *slab_ptr = ca->ptr + self_slab_offset;
30801
- uint64_t query_val = *(uint64_t *)(cv->ptr + val_offset);
30801
+ ca_u_uint64_t query_val = *(ca_u_uint64_t *)(cv->ptr + val_offset);
30802
30802
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
30803
30803
  double query_eps = 0.0; (void) query_eps;
30804
30804
 
@@ -30815,7 +30815,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
30815
30815
  uint64_t best_dist = 0;
30816
30816
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
30817
30817
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
30818
- uint64_t v = *(uint64_t *)(slab_ptr + i * slab_stride);
30818
+ ca_u_uint64_t v = *(ca_u_uint64_t *)(slab_ptr + i * slab_stride);
30819
30819
  uint64_t dist = ( v >= query_val ) ? (uint64_t) v - (uint64_t) query_val
30820
30820
  : (uint64_t) query_val - (uint64_t) v;
30821
30821
  if ( result == (ca_size_t) -1 || dist < best_dist ) { best_dist = dist; result = i; }
@@ -30870,9 +30870,9 @@ search_nearest_addr_ki_native_f32 (VALUE self, CArray *ca, VALUE rval, int axis)
30870
30870
  if ( ca->ndim == 1 ) { return Qnil; }
30871
30871
  return voutu;
30872
30872
  }
30873
- float query_val_buf;
30873
+ ca_u_float32_t query_val_buf;
30874
30874
  rb_ca_obj2ptr(self, rval, &query_val_buf);
30875
- float query_val = query_val_buf;
30875
+ ca_u_float32_t query_val = query_val_buf;
30876
30876
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
30877
30877
 
30878
30878
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -30920,7 +30920,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
30920
30920
  double best_dist = INFINITY;
30921
30921
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
30922
30922
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
30923
- float v = *(float *)(slab_ptr + i * slab_stride);
30923
+ ca_u_float32_t v = *(ca_u_float32_t *)(slab_ptr + i * slab_stride);
30924
30924
  /* An equal value is at distance 0 even when both are infinite
30925
30925
  (Inf - Inf is NaN); a NaN distance never wins. */
30926
30926
  double dist = ( v == query_val ) ? 0.0 : fabs((double)v - (double)query_val);
@@ -31168,7 +31168,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
31168
31168
  val_offset += out_idx[k] * val_strides[k];
31169
31169
  }
31170
31170
  char *slab_ptr = ca->ptr + self_slab_offset;
31171
- float query_val = *(float *)(cv->ptr + val_offset);
31171
+ ca_u_float32_t query_val = *(ca_u_float32_t *)(cv->ptr + val_offset);
31172
31172
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
31173
31173
  double query_eps = 0.0; (void) query_eps;
31174
31174
 
@@ -31183,7 +31183,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
31183
31183
  double best_dist = INFINITY;
31184
31184
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
31185
31185
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
31186
- float v = *(float *)(slab_ptr + i * slab_stride);
31186
+ ca_u_float32_t v = *(ca_u_float32_t *)(slab_ptr + i * slab_stride);
31187
31187
  /* An equal value is at distance 0 even when both are infinite
31188
31188
  (Inf - Inf is NaN); a NaN distance never wins. */
31189
31189
  double dist = ( v == query_val ) ? 0.0 : fabs((double)v - (double)query_val);
@@ -31240,9 +31240,9 @@ search_nearest_addr_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
31240
31240
  if ( ca->ndim == 1 ) { return Qnil; }
31241
31241
  return voutu;
31242
31242
  }
31243
- double query_val_buf;
31243
+ ca_u_float64_t query_val_buf;
31244
31244
  rb_ca_obj2ptr(self, rval, &query_val_buf);
31245
- double query_val = query_val_buf;
31245
+ ca_u_float64_t query_val = query_val_buf;
31246
31246
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
31247
31247
 
31248
31248
  int8_t slab_axes[1] = { (int8_t) axis };
@@ -31290,7 +31290,7 @@ for ( int8_t mm = 0; mm < st.outer_ndim; mm++ ) {
31290
31290
  double best_dist = INFINITY;
31291
31291
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
31292
31292
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
31293
- double v = *(double *)(slab_ptr + i * slab_stride);
31293
+ ca_u_float64_t v = *(ca_u_float64_t *)(slab_ptr + i * slab_stride);
31294
31294
  /* An equal value is at distance 0 even when both are infinite
31295
31295
  (Inf - Inf is NaN); a NaN distance never wins. */
31296
31296
  double dist = ( v == query_val ) ? 0.0 : fabs((double)v - (double)query_val);
@@ -31538,7 +31538,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
31538
31538
  val_offset += out_idx[k] * val_strides[k];
31539
31539
  }
31540
31540
  char *slab_ptr = ca->ptr + self_slab_offset;
31541
- double query_val = *(double *)(cv->ptr + val_offset);
31541
+ ca_u_float64_t query_val = *(ca_u_float64_t *)(cv->ptr + val_offset);
31542
31542
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
31543
31543
  double query_eps = 0.0; (void) query_eps;
31544
31544
 
@@ -31553,7 +31553,7 @@ rb_raise(rb_eNotImpError, "%s: view_flat semantics with CArray val (broadcast) n
31553
31553
  double best_dist = INFINITY;
31554
31554
  for ( ca_size_t i = 0; i < slab_n; i++ ) {
31555
31555
  if ( mask_in && mask_in[i * slab_mask_stride] ) continue;
31556
- double v = *(double *)(slab_ptr + i * slab_stride);
31556
+ ca_u_float64_t v = *(ca_u_float64_t *)(slab_ptr + i * slab_stride);
31557
31557
  /* An equal value is at distance 0 even when both are infinite
31558
31558
  (Inf - Inf is NaN); a NaN distance never wins. */
31559
31559
  double dist = ( v == query_val ) ? 0.0 : fabs((double)v - (double)query_val);
@@ -32491,23 +32491,23 @@ linear_section_binary_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axi
32491
32491
  VALUE voutu = rb_ca_new_reduced(self, undef_axes, 1, CA_FLOAT64, 0);
32492
32492
  CArray *cou;
32493
32493
  GetCArray(voutu, cou);
32494
- MEMZERO((double *) cou->ptr, double, cou->elements);
32494
+ MEMZERO((ca_u_float64_t *) cou->ptr, ca_u_float64_t, cou->elements);
32495
32495
  ca_create_mask(cou);
32496
32496
  memset(cou->mask->ptr, 1, (size_t) cou->elements);
32497
32497
  if ( ca->ndim == 1 ) { return Qnil; }
32498
32498
  return voutu;
32499
32499
  }
32500
- double query_val_buf;
32500
+ ca_u_float64_t query_val_buf;
32501
32501
  rb_ca_obj2ptr(self, rval, &query_val_buf);
32502
- double query_val = query_val_buf;
32502
+ ca_u_float64_t query_val = query_val_buf;
32503
32503
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
32504
32504
 
32505
32505
  int8_t slab_axes[1] = { (int8_t) axis };
32506
32506
  VALUE vout = rb_ca_new_reduced(self, slab_axes, 1, CA_FLOAT64, 0);
32507
32507
  CArray *co;
32508
32508
  GetCArray(vout, co);
32509
- double *op = (double *) co->ptr;
32510
- boolean8_t *op_mask = NULL; /* lazily allocated on the first masked output cell */
32509
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
32510
+
32511
32511
 
32512
32512
  ca_iter_state st;
32513
32513
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
@@ -32527,19 +32527,19 @@ linear_section_binary_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axi
32527
32527
  ca_size_t slab_mask_stride = st.slab_mask_strides[0];
32528
32528
  (void) mask_in;
32529
32529
  (void) slab_mask_stride; /* mask_self: :raise rejects upstream */
32530
- double result;
32530
+ ca_u_float64_t result;
32531
32531
  {
32532
32532
  result = NAN;
32533
32533
  if ( slab_n <= 1 ) {
32534
32534
  /* A one-point axis has no segment: only the point itself is in
32535
32535
  * range, at 0. An empty one has nothing in range. */
32536
- if ( slab_n == 1 && query_val == *(double *)slab_ptr ) {
32536
+ if ( slab_n == 1 && query_val == *(ca_u_float64_t *)slab_ptr ) {
32537
32537
  result = 0.0;
32538
32538
  }
32539
32539
  }
32540
32540
  else {
32541
- double y0 = *(double *)(slab_ptr + 0 * slab_stride);
32542
- double yn = *(double *)(slab_ptr + (slab_n - 1) * slab_stride);
32541
+ double y0 = *(ca_u_float64_t *)(slab_ptr + 0 * slab_stride);
32542
+ double yn = *(ca_u_float64_t *)(slab_ptr + (slab_n - 1) * slab_stride);
32543
32543
  int ascending = ( yn >= y0 ); /* grid direction (monotonic assumed) */
32544
32544
  ca_size_t x1 = 0;
32545
32545
  int found = 0;
@@ -32562,8 +32562,8 @@ linear_section_binary_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axi
32562
32562
  double gd = (query_val - y0) / (yn - y0) * (double)(slab_n - 1);
32563
32563
  if ( gd >= 0.0 && gd < (double)(slab_n - 1) ) {
32564
32564
  ca_size_t ag = (ca_size_t) gd;
32565
- double yga = *(double *)(slab_ptr + ag * slab_stride);
32566
- double ygb = *(double *)(slab_ptr + (ag + 1) * slab_stride);
32565
+ double yga = *(ca_u_float64_t *)(slab_ptr + ag * slab_stride);
32566
+ double ygb = *(ca_u_float64_t *)(slab_ptr + (ag + 1) * slab_stride);
32567
32567
  if ( (yga - query_val) * (ygb - query_val) <= 0 ) {
32568
32568
  x1 = ag; found = 1;
32569
32569
  }
@@ -32578,7 +32578,7 @@ linear_section_binary_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axi
32578
32578
  double ya = y0;
32579
32579
  while ( (b - a) > 1 ) {
32580
32580
  ca_size_t c = (a + b) / 2;
32581
- double yc = *(double *)(slab_ptr + c * slab_stride);
32581
+ double yc = *(ca_u_float64_t *)(slab_ptr + c * slab_stride);
32582
32582
  if ( (ya - query_val) * (yc - query_val) <= 0 ) { b = c; }
32583
32583
  else { a = c; ya = yc; }
32584
32584
  }
@@ -32587,8 +32587,8 @@ linear_section_binary_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axi
32587
32587
  }
32588
32588
 
32589
32589
  if ( found ) {
32590
- double y1 = *(double *)(slab_ptr + x1 * slab_stride);
32591
- double y2 = *(double *)(slab_ptr + (x1 + 1) * slab_stride);
32590
+ double y1 = *(ca_u_float64_t *)(slab_ptr + x1 * slab_stride);
32591
+ double y2 = *(ca_u_float64_t *)(slab_ptr + (x1 + 1) * slab_stride);
32592
32592
  double rest = (query_val - y1) / (y2 - y1);
32593
32593
  if ( y2 != 0.0 && fabs(y2 - query_val) / fabs(y2) < DBL_EPSILON * 100 ) {
32594
32594
  result = (double)(x1 + 1);
@@ -32748,7 +32748,7 @@ linear_section_binary_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axi
32748
32748
  VALUE vout = rb_carray_new(CA_FLOAT64, out_ndim, out_dim, 0, NULL);
32749
32749
  CArray *co;
32750
32750
  GetCArray(vout, co);
32751
- double *op = (double *) co->ptr;
32751
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
32752
32752
  boolean8_t *op_mask = NULL; /* lazily allocated on the first masked output cell */
32753
32753
 
32754
32754
 
@@ -32837,29 +32837,29 @@ linear_section_binary_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axi
32837
32837
  val_offset += out_idx[k] * val_strides[k];
32838
32838
  }
32839
32839
  char *slab_ptr = ca->ptr + self_slab_offset;
32840
- double query_val = *(double *)(cv->ptr + val_offset);
32840
+ ca_u_float64_t query_val = *(ca_u_float64_t *)(cv->ptr + val_offset);
32841
32841
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
32842
32842
  double query_eps = 0.0; (void) query_eps;
32843
32843
  (void) mask_in;
32844
32844
  (void) slab_mask_stride; /* mask_self: :raise rejects upstream */
32845
- double result;
32845
+ ca_u_float64_t result;
32846
32846
  if ( cv_mask_base && cv_mask_base[val_offset / cv->bytes] ) {
32847
32847
  if ( ! op_mask ) { ca_create_mask(co); op_mask = (boolean8_t *) co->mask->ptr; }
32848
32848
  op_mask[flat] = 1;
32849
- op[flat] = (double) 0; /* undetermined query; the mask bit is what counts */
32849
+ op[flat] = (ca_u_float64_t) 0; /* undetermined query; the mask bit is what counts */
32850
32850
  } else {
32851
32851
  {
32852
32852
  result = NAN;
32853
32853
  if ( slab_n <= 1 ) {
32854
32854
  /* A one-point axis has no segment: only the point itself is in
32855
32855
  * range, at 0. An empty one has nothing in range. */
32856
- if ( slab_n == 1 && query_val == *(double *)slab_ptr ) {
32856
+ if ( slab_n == 1 && query_val == *(ca_u_float64_t *)slab_ptr ) {
32857
32857
  result = 0.0;
32858
32858
  }
32859
32859
  }
32860
32860
  else {
32861
- double y0 = *(double *)(slab_ptr + 0 * slab_stride);
32862
- double yn = *(double *)(slab_ptr + (slab_n - 1) * slab_stride);
32861
+ double y0 = *(ca_u_float64_t *)(slab_ptr + 0 * slab_stride);
32862
+ double yn = *(ca_u_float64_t *)(slab_ptr + (slab_n - 1) * slab_stride);
32863
32863
  int ascending = ( yn >= y0 ); /* grid direction (monotonic assumed) */
32864
32864
  ca_size_t x1 = 0;
32865
32865
  int found = 0;
@@ -32882,8 +32882,8 @@ linear_section_binary_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axi
32882
32882
  double gd = (query_val - y0) / (yn - y0) * (double)(slab_n - 1);
32883
32883
  if ( gd >= 0.0 && gd < (double)(slab_n - 1) ) {
32884
32884
  ca_size_t ag = (ca_size_t) gd;
32885
- double yga = *(double *)(slab_ptr + ag * slab_stride);
32886
- double ygb = *(double *)(slab_ptr + (ag + 1) * slab_stride);
32885
+ double yga = *(ca_u_float64_t *)(slab_ptr + ag * slab_stride);
32886
+ double ygb = *(ca_u_float64_t *)(slab_ptr + (ag + 1) * slab_stride);
32887
32887
  if ( (yga - query_val) * (ygb - query_val) <= 0 ) {
32888
32888
  x1 = ag; found = 1;
32889
32889
  }
@@ -32898,7 +32898,7 @@ linear_section_binary_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axi
32898
32898
  double ya = y0;
32899
32899
  while ( (b - a) > 1 ) {
32900
32900
  ca_size_t c = (a + b) / 2;
32901
- double yc = *(double *)(slab_ptr + c * slab_stride);
32901
+ double yc = *(ca_u_float64_t *)(slab_ptr + c * slab_stride);
32902
32902
  if ( (ya - query_val) * (yc - query_val) <= 0 ) { b = c; }
32903
32903
  else { a = c; ya = yc; }
32904
32904
  }
@@ -32907,8 +32907,8 @@ linear_section_binary_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axi
32907
32907
  }
32908
32908
 
32909
32909
  if ( found ) {
32910
- double y1 = *(double *)(slab_ptr + x1 * slab_stride);
32911
- double y2 = *(double *)(slab_ptr + (x1 + 1) * slab_stride);
32910
+ double y1 = *(ca_u_float64_t *)(slab_ptr + x1 * slab_stride);
32911
+ double y2 = *(ca_u_float64_t *)(slab_ptr + (x1 + 1) * slab_stride);
32912
32912
  double rest = (query_val - y1) / (y2 - y1);
32913
32913
  if ( y2 != 0.0 && fabs(y2 - query_val) / fabs(y2) < DBL_EPSILON * 100 ) {
32914
32914
  result = (double)(x1 + 1);
@@ -33020,23 +33020,23 @@ linear_section_linear_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axi
33020
33020
  VALUE voutu = rb_ca_new_reduced(self, undef_axes, 1, CA_FLOAT64, 0);
33021
33021
  CArray *cou;
33022
33022
  GetCArray(voutu, cou);
33023
- MEMZERO((double *) cou->ptr, double, cou->elements);
33023
+ MEMZERO((ca_u_float64_t *) cou->ptr, ca_u_float64_t, cou->elements);
33024
33024
  ca_create_mask(cou);
33025
33025
  memset(cou->mask->ptr, 1, (size_t) cou->elements);
33026
33026
  if ( ca->ndim == 1 ) { return Qnil; }
33027
33027
  return voutu;
33028
33028
  }
33029
- double query_val_buf;
33029
+ ca_u_float64_t query_val_buf;
33030
33030
  rb_ca_obj2ptr(self, rval, &query_val_buf);
33031
- double query_val = query_val_buf;
33031
+ ca_u_float64_t query_val = query_val_buf;
33032
33032
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
33033
33033
 
33034
33034
  int8_t slab_axes[1] = { (int8_t) axis };
33035
33035
  VALUE vout = rb_ca_new_reduced(self, slab_axes, 1, CA_FLOAT64, 0);
33036
33036
  CArray *co;
33037
33037
  GetCArray(vout, co);
33038
- double *op = (double *) co->ptr;
33039
- boolean8_t *op_mask = NULL; /* lazily allocated on the first masked output cell */
33038
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
33039
+
33040
33040
 
33041
33041
  ca_iter_state st;
33042
33042
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
@@ -33056,13 +33056,13 @@ linear_section_linear_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axi
33056
33056
  ca_size_t slab_mask_stride = st.slab_mask_strides[0];
33057
33057
  (void) mask_in;
33058
33058
  (void) slab_mask_stride; /* mask_self: :raise rejects upstream */
33059
- double result;
33059
+ ca_u_float64_t result;
33060
33060
  {
33061
33061
  result = NAN;
33062
33062
  if ( slab_n <= 1 ) {
33063
33063
  /* A one-point axis has no segment: only the point itself is in
33064
33064
  * range, at 0. An empty one has nothing in range. */
33065
- if ( slab_n == 1 && query_val == *(double *)slab_ptr ) {
33065
+ if ( slab_n == 1 && query_val == *(ca_u_float64_t *)slab_ptr ) {
33066
33066
  result = 0.0;
33067
33067
  }
33068
33068
  }
@@ -33070,15 +33070,15 @@ linear_section_linear_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axi
33070
33070
  ca_size_t x1 = 0;
33071
33071
  int found = 0;
33072
33072
  for ( ca_size_t k = 0; k < slab_n - 1; k++ ) {
33073
- double yk = *(double *)(slab_ptr + k * slab_stride);
33074
- double yk1 = *(double *)(slab_ptr + (k + 1) * slab_stride);
33073
+ double yk = *(ca_u_float64_t *)(slab_ptr + k * slab_stride);
33074
+ double yk1 = *(ca_u_float64_t *)(slab_ptr + (k + 1) * slab_stride);
33075
33075
  if ( (query_val - yk) * (query_val - yk1) <= 0 ) {
33076
33076
  x1 = k; found = 1; break;
33077
33077
  }
33078
33078
  }
33079
33079
  if ( found ) {
33080
- double y1 = *(double *)(slab_ptr + x1 * slab_stride);
33081
- double y2 = *(double *)(slab_ptr + (x1 + 1) * slab_stride);
33080
+ double y1 = *(ca_u_float64_t *)(slab_ptr + x1 * slab_stride);
33081
+ double y2 = *(ca_u_float64_t *)(slab_ptr + (x1 + 1) * slab_stride);
33082
33082
  result = (query_val - y1) / (y2 - y1) + (double) x1;
33083
33083
  }
33084
33084
 
@@ -33228,7 +33228,7 @@ linear_section_linear_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axi
33228
33228
  VALUE vout = rb_carray_new(CA_FLOAT64, out_ndim, out_dim, 0, NULL);
33229
33229
  CArray *co;
33230
33230
  GetCArray(vout, co);
33231
- double *op = (double *) co->ptr;
33231
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
33232
33232
  boolean8_t *op_mask = NULL; /* lazily allocated on the first masked output cell */
33233
33233
 
33234
33234
 
@@ -33317,23 +33317,23 @@ linear_section_linear_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axi
33317
33317
  val_offset += out_idx[k] * val_strides[k];
33318
33318
  }
33319
33319
  char *slab_ptr = ca->ptr + self_slab_offset;
33320
- double query_val = *(double *)(cv->ptr + val_offset);
33320
+ ca_u_float64_t query_val = *(ca_u_float64_t *)(cv->ptr + val_offset);
33321
33321
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
33322
33322
  double query_eps = 0.0; (void) query_eps;
33323
33323
  (void) mask_in;
33324
33324
  (void) slab_mask_stride; /* mask_self: :raise rejects upstream */
33325
- double result;
33325
+ ca_u_float64_t result;
33326
33326
  if ( cv_mask_base && cv_mask_base[val_offset / cv->bytes] ) {
33327
33327
  if ( ! op_mask ) { ca_create_mask(co); op_mask = (boolean8_t *) co->mask->ptr; }
33328
33328
  op_mask[flat] = 1;
33329
- op[flat] = (double) 0; /* undetermined query; the mask bit is what counts */
33329
+ op[flat] = (ca_u_float64_t) 0; /* undetermined query; the mask bit is what counts */
33330
33330
  } else {
33331
33331
  {
33332
33332
  result = NAN;
33333
33333
  if ( slab_n <= 1 ) {
33334
33334
  /* A one-point axis has no segment: only the point itself is in
33335
33335
  * range, at 0. An empty one has nothing in range. */
33336
- if ( slab_n == 1 && query_val == *(double *)slab_ptr ) {
33336
+ if ( slab_n == 1 && query_val == *(ca_u_float64_t *)slab_ptr ) {
33337
33337
  result = 0.0;
33338
33338
  }
33339
33339
  }
@@ -33341,15 +33341,15 @@ linear_section_linear_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axi
33341
33341
  ca_size_t x1 = 0;
33342
33342
  int found = 0;
33343
33343
  for ( ca_size_t k = 0; k < slab_n - 1; k++ ) {
33344
- double yk = *(double *)(slab_ptr + k * slab_stride);
33345
- double yk1 = *(double *)(slab_ptr + (k + 1) * slab_stride);
33344
+ double yk = *(ca_u_float64_t *)(slab_ptr + k * slab_stride);
33345
+ double yk1 = *(ca_u_float64_t *)(slab_ptr + (k + 1) * slab_stride);
33346
33346
  if ( (query_val - yk) * (query_val - yk1) <= 0 ) {
33347
33347
  x1 = k; found = 1; break;
33348
33348
  }
33349
33349
  }
33350
33350
  if ( found ) {
33351
- double y1 = *(double *)(slab_ptr + x1 * slab_stride);
33352
- double y2 = *(double *)(slab_ptr + (x1 + 1) * slab_stride);
33351
+ double y1 = *(ca_u_float64_t *)(slab_ptr + x1 * slab_stride);
33352
+ double y2 = *(ca_u_float64_t *)(slab_ptr + (x1 + 1) * slab_stride);
33353
33353
  result = (query_val - y1) / (y2 - y1) + (double) x1;
33354
33354
  }
33355
33355
 
@@ -33451,23 +33451,23 @@ linear_fetch_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
33451
33451
  VALUE voutu = rb_ca_new_reduced(self, undef_axes, 1, CA_FLOAT64, 0);
33452
33452
  CArray *cou;
33453
33453
  GetCArray(voutu, cou);
33454
- MEMZERO((double *) cou->ptr, double, cou->elements);
33454
+ MEMZERO((ca_u_float64_t *) cou->ptr, ca_u_float64_t, cou->elements);
33455
33455
  ca_create_mask(cou);
33456
33456
  memset(cou->mask->ptr, 1, (size_t) cou->elements);
33457
33457
  if ( ca->ndim == 1 ) { return Qnil; }
33458
33458
  return voutu;
33459
33459
  }
33460
- double query_val_buf;
33460
+ ca_u_float64_t query_val_buf;
33461
33461
  rb_ca_obj2ptr(self, rval, &query_val_buf);
33462
- double query_val = query_val_buf;
33462
+ ca_u_float64_t query_val = query_val_buf;
33463
33463
  double query_eps = 0.0; (void) query_eps; /* unused in this kernel */
33464
33464
 
33465
33465
  int8_t slab_axes[1] = { (int8_t) axis };
33466
33466
  VALUE vout = rb_ca_new_reduced(self, slab_axes, 1, CA_FLOAT64, 0);
33467
33467
  CArray *co;
33468
33468
  GetCArray(vout, co);
33469
- double *op = (double *) co->ptr;
33470
- boolean8_t *op_mask = NULL; /* lazily allocated on the first masked output cell */
33469
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
33470
+
33471
33471
 
33472
33472
  ca_iter_state st;
33473
33473
  int rc = ca_iter_state_init_l2(&st, ca, CA_SLAB_AXES,
@@ -33487,15 +33487,15 @@ linear_fetch_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
33487
33487
  ca_size_t slab_mask_stride = st.slab_mask_strides[0];
33488
33488
  (void) mask_in;
33489
33489
  (void) slab_mask_stride; /* mask_self: :raise rejects upstream */
33490
- double result;
33490
+ ca_u_float64_t result;
33491
33491
  {
33492
33492
  result = NAN;
33493
33493
  if ( slab_n >= 1 && query_val >= 0.0 && query_val <= (double)(slab_n - 1) ) {
33494
33494
  ca_size_t il = (ca_size_t) floor(query_val);
33495
33495
  ca_size_t iu = (ca_size_t) ceil(query_val);
33496
33496
  double w = query_val - floor(query_val);
33497
- double yl = *(double *)(slab_ptr + il * slab_stride);
33498
- double yu = *(double *)(slab_ptr + iu * slab_stride);
33497
+ double yl = *(ca_u_float64_t *)(slab_ptr + il * slab_stride);
33498
+ double yu = *(ca_u_float64_t *)(slab_ptr + iu * slab_stride);
33499
33499
  result = yu * w + yl * (1.0 - w);
33500
33500
  }
33501
33501
  }
@@ -33636,7 +33636,7 @@ linear_fetch_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
33636
33636
  VALUE vout = rb_carray_new(CA_FLOAT64, out_ndim, out_dim, 0, NULL);
33637
33637
  CArray *co;
33638
33638
  GetCArray(vout, co);
33639
- double *op = (double *) co->ptr;
33639
+ ca_u_float64_t *op = (ca_u_float64_t *) co->ptr;
33640
33640
  boolean8_t *op_mask = NULL; /* lazily allocated on the first masked output cell */
33641
33641
 
33642
33642
 
@@ -33725,16 +33725,16 @@ linear_fetch_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
33725
33725
  val_offset += out_idx[k] * val_strides[k];
33726
33726
  }
33727
33727
  char *slab_ptr = ca->ptr + self_slab_offset;
33728
- double query_val = *(double *)(cv->ptr + val_offset);
33728
+ ca_u_float64_t query_val = *(ca_u_float64_t *)(cv->ptr + val_offset);
33729
33729
  boolean8_t *mask_in = ca_mask_base ? (ca_mask_base + self_slab_offset / ca->bytes) : NULL;
33730
33730
  double query_eps = 0.0; (void) query_eps;
33731
33731
  (void) mask_in;
33732
33732
  (void) slab_mask_stride; /* mask_self: :raise rejects upstream */
33733
- double result;
33733
+ ca_u_float64_t result;
33734
33734
  if ( cv_mask_base && cv_mask_base[val_offset / cv->bytes] ) {
33735
33735
  if ( ! op_mask ) { ca_create_mask(co); op_mask = (boolean8_t *) co->mask->ptr; }
33736
33736
  op_mask[flat] = 1;
33737
- op[flat] = (double) 0; /* undetermined query; the mask bit is what counts */
33737
+ op[flat] = (ca_u_float64_t) 0; /* undetermined query; the mask bit is what counts */
33738
33738
  } else {
33739
33739
  {
33740
33740
  result = NAN;
@@ -33742,8 +33742,8 @@ linear_fetch_ki_native_f64 (VALUE self, CArray *ca, VALUE rval, int axis)
33742
33742
  ca_size_t il = (ca_size_t) floor(query_val);
33743
33743
  ca_size_t iu = (ca_size_t) ceil(query_val);
33744
33744
  double w = query_val - floor(query_val);
33745
- double yl = *(double *)(slab_ptr + il * slab_stride);
33746
- double yu = *(double *)(slab_ptr + iu * slab_stride);
33745
+ double yl = *(ca_u_float64_t *)(slab_ptr + il * slab_stride);
33746
+ double yu = *(ca_u_float64_t *)(slab_ptr + iu * slab_stride);
33747
33747
  result = yu * w + yl * (1.0 - w);
33748
33748
  }
33749
33749
  }