carray 3.0.0 → 3.0.1

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 (180) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +2 -1
  3. data/CHANGELOG.md +325 -3
  4. data/{NEWS.md → CHANGELOG.v1.md} +1 -1
  5. data/README.md +32 -32
  6. data/carray.gemspec +12 -8
  7. data/ext/ca_axis_group.c +55 -19
  8. data/ext/ca_binop_dispatch.c +5 -6
  9. data/ext/ca_binop_dispatch.h +0 -7
  10. data/ext/ca_categorical_iterator.c +13 -13
  11. data/ext/ca_for_each_element.h +6 -8
  12. data/ext/ca_group_iter.c +1 -1
  13. data/ext/ca_kernel_iterator.c +69 -23
  14. data/ext/ca_kernel_iterator.h +3 -10
  15. data/ext/ca_obj_bincmp.c +57 -27
  16. data/ext/ca_obj_binop.c +86 -30
  17. data/ext/ca_obj_const_string.c +3 -1
  18. data/ext/ca_obj_face.c +80 -0
  19. data/ext/ca_obj_face.h +33 -1
  20. data/ext/ca_obj_fake.c +11 -0
  21. data/ext/ca_obj_fixlen_string.c +3 -1
  22. data/ext/ca_obj_grid.c +11 -3
  23. data/ext/ca_obj_meld.c +13 -8
  24. data/ext/ca_obj_moncmp.c +33 -14
  25. data/ext/ca_obj_monop.c +19 -7
  26. data/ext/ca_obj_object.c +99 -4
  27. data/ext/ca_obj_record.c +3 -1
  28. data/ext/ca_obj_refer.c +30 -6
  29. data/ext/ca_obj_roll.c +13 -5
  30. data/ext/ca_obj_select_axis.c +16 -6
  31. data/ext/ca_obj_shift.c +3 -3
  32. data/ext/ca_obj_stride.c +106 -23
  33. data/ext/ca_obj_string.c +3 -1
  34. data/ext/ca_obj_tile.c +13 -5
  35. data/ext/ca_obj_time.c +3 -1
  36. data/ext/ca_obj_timedelta.c +3 -1
  37. data/ext/ca_obj_transpose.c +1 -1
  38. data/ext/ca_obj_triop.c +62 -23
  39. data/ext/ca_obj_window.c +86 -17
  40. data/ext/ca_op_cmplx64.h +123 -0
  41. data/ext/ca_op_ipower.c +0 -3
  42. data/ext/ca_sort_kernels.h +5 -5
  43. data/ext/ca_sweep_engine.c +78 -35
  44. data/ext/ca_sweep_engine.h +13 -4
  45. data/ext/ca_transform_common.c +7 -0
  46. data/ext/carray.h +127 -130
  47. data/ext/carray_access.c +56 -34
  48. data/ext/carray_bincount.c +8 -8
  49. data/ext/carray_broadcast.c +99 -6
  50. data/ext/carray_build_flags.h +3 -0
  51. data/ext/carray_call_cfunc.c +1491 -0
  52. data/ext/carray_call_cfunc.h +153 -0
  53. data/ext/carray_cast.c +69 -31
  54. data/ext/carray_conversion.c +22 -22
  55. data/ext/carray_copy.c +12 -2
  56. data/ext/carray_core.c +57 -10
  57. data/ext/carray_count.c +1 -1
  58. data/ext/carray_element.c +7 -7
  59. data/ext/carray_factorize.c +28 -28
  60. data/ext/carray_hold.c +1 -1
  61. data/ext/carray_index_classifier.c +7 -21
  62. data/ext/carray_internal.h +19 -3
  63. data/ext/carray_kernels_bincmp.c +1 -0
  64. data/ext/carray_kernels_binop.c +320 -298
  65. data/ext/carray_kernels_init.c +1095 -0
  66. data/ext/carray_kernels_map.c +1 -0
  67. data/ext/carray_kernels_moncmp.c +1 -0
  68. data/ext/carray_kernels_monop.c +412 -411
  69. data/ext/carray_kernels_reduce_aggregate.c +88 -87
  70. data/ext/carray_kernels_reduce_boolean.c +1 -0
  71. data/ext/carray_kernels_reduce_cumulative.c +54 -53
  72. data/ext/carray_kernels_reduce_extreme.c +51 -50
  73. data/ext/carray_kernels_reduce_variance.c +1 -0
  74. data/ext/carray_kernels_scan.c +1 -0
  75. data/ext/carray_kernels_search.c +93 -92
  76. data/ext/carray_kernels_sort.c +1 -0
  77. data/ext/carray_kernels_triop.c +1 -0
  78. data/ext/carray_lazy.c +175 -5
  79. data/ext/carray_mask.c +6 -5
  80. data/ext/carray_median_percentile.c +1 -1
  81. data/ext/carray_memory_view.c +46 -21
  82. data/ext/carray_operator.c +46 -49
  83. data/ext/carray_partition.c +4 -4
  84. data/ext/carray_random.c +7 -7
  85. data/ext/carray_scatter.c +1 -1
  86. data/ext/carray_sort.c +3 -3
  87. data/ext/carray_sort_kernel.c +10 -10
  88. data/ext/carray_test.c +1 -1
  89. data/ext/extconf.rb +18 -0
  90. data/ext/mk_call_cfunc.rb +243 -52
  91. data/ext/mkkernel.rb +354 -100
  92. data/ext/ruby_carray.c +18 -16
  93. data/ext/version.h +4 -4
  94. data/lib/carray/autoload_carray.rb +19 -0
  95. data/lib/carray/autoload_method_extension.rb +2 -1
  96. data/lib/carray/axis_group.rb +7 -7
  97. data/lib/carray/basics.rb +59 -59
  98. data/lib/carray/bincount_nd.rb +12 -12
  99. data/lib/carray/block_iterator.rb +24 -14
  100. data/lib/carray/categorical.rb +4 -4
  101. data/lib/carray/categorical_iterator.rb +98 -76
  102. data/lib/carray/conditional.rb +14 -14
  103. data/lib/carray/construct.rb +21 -0
  104. data/lib/carray/core_extensions.rb +62 -5
  105. data/lib/carray/data_type_extension.rb +18 -1
  106. data/lib/carray/frame/concat.rb +3 -3
  107. data/lib/carray/frame/convert.rb +1 -1
  108. data/lib/carray/frame/frame.rb +4 -11
  109. data/lib/carray/frame/io.rb +159 -2
  110. data/lib/carray/frame/sort.rb +1 -1
  111. data/lib/carray/frame/verbs.rb +18 -1
  112. data/lib/carray/fuse_source.rb +123 -0
  113. data/lib/carray/fusion.rb +218 -0
  114. data/lib/carray/histogram.rb +16 -16
  115. data/lib/carray/inspect.rb +1 -7
  116. data/lib/carray/iterator.rb +4 -3
  117. data/lib/carray/lazy.rb +125 -73
  118. data/lib/carray/meld_reduce.rb +2 -2
  119. data/lib/carray/methods/align_addr.rb +1 -1
  120. data/lib/carray/methods/composition.rb +1 -1
  121. data/lib/carray/methods/is_in.rb +12 -12
  122. data/lib/carray/methods/locate_addr.rb +6 -1
  123. data/lib/carray/methods/mask_duplicates.rb +1 -1
  124. data/lib/carray/methods/meshgrid.rb +4 -5
  125. data/lib/carray/methods/mode.rb +2 -2
  126. data/lib/carray/methods/nunique.rb +1 -1
  127. data/lib/carray/methods/snap.rb +7 -2
  128. data/lib/carray/methods/unique.rb +3 -3
  129. data/lib/carray/methods/value_counts.rb +2 -2
  130. data/lib/carray/runtime.rb +0 -19
  131. data/lib/carray/slab_iterator.rb +20 -7
  132. data/lib/carray/string_operation_extension.rb +5 -5
  133. data/lib/carray/time.rb +890 -491
  134. data/lib/carray/window_iterator.rb +285 -13
  135. data/lib/carray.rb +5 -5
  136. data/yard-stubs/ca_obj_array.rb +385 -0
  137. data/yard-stubs/ca_obj_bitarray.rb +38 -0
  138. data/yard-stubs/ca_obj_bitfield.rb +43 -0
  139. data/yard-stubs/ca_obj_block.rb +73 -0
  140. data/yard-stubs/ca_obj_byte_swap.rb +56 -0
  141. data/yard-stubs/ca_obj_fake.rb +31 -0
  142. data/yard-stubs/ca_obj_farray.rb +32 -0
  143. data/yard-stubs/ca_obj_field.rb +45 -0
  144. data/yard-stubs/ca_obj_grid.rb +35 -0
  145. data/yard-stubs/ca_obj_refer.rb +72 -0
  146. data/yard-stubs/ca_obj_roll.rb +45 -0
  147. data/yard-stubs/ca_obj_shift.rb +43 -0
  148. data/yard-stubs/ca_obj_stride.rb +181 -0
  149. data/yard-stubs/ca_obj_tile.rb +29 -0
  150. data/yard-stubs/ca_obj_transpose.rb +40 -0
  151. data/yard-stubs/ca_obj_window.rb +49 -0
  152. data/yard-stubs/carray_access.rb +131 -0
  153. data/yard-stubs/carray_attribute.rb +246 -0
  154. data/yard-stubs/carray_broadcast.rb +37 -0
  155. data/yard-stubs/carray_cast.rb +489 -0
  156. data/yard-stubs/carray_class.rb +65 -0
  157. data/yard-stubs/carray_conversion.rb +76 -0
  158. data/yard-stubs/carray_copy.rb +79 -0
  159. data/yard-stubs/carray_core.rb +114 -0
  160. data/yard-stubs/carray_count.rb +79 -0
  161. data/yard-stubs/carray_element.rb +108 -0
  162. data/yard-stubs/carray_generate.rb +66 -0
  163. data/yard-stubs/carray_lazy.rb +23 -0
  164. data/yard-stubs/carray_loop.rb +140 -0
  165. data/yard-stubs/carray_mask.rb +259 -0
  166. data/yard-stubs/carray_math.rb +132 -0
  167. data/yard-stubs/carray_mathfunc.rb +45 -0
  168. data/yard-stubs/carray_median_percentile.rb +89 -0
  169. data/yard-stubs/carray_memory_view.rb +163 -0
  170. data/yard-stubs/carray_order.rb +312 -0
  171. data/yard-stubs/carray_random.rb +89 -0
  172. data/yard-stubs/carray_scatter.rb +106 -0
  173. data/yard-stubs/carray_slab.rb +57 -0
  174. data/yard-stubs/carray_sort.rb +163 -0
  175. data/yard-stubs/carray_test.rb +85 -0
  176. data/yard-stubs/carray_undef.rb +64 -0
  177. data/yard-stubs/carray_utils.rb +97 -0
  178. data/yard-stubs/ruby_carray.rb +193 -0
  179. metadata +59 -10
  180. data/ext/ca_obj_unbound_repeat.c +0 -496
@@ -34,6 +34,7 @@ static inline VALUE BOOL2VAL (boolean8_t x) { return x ? Qtrue : Qfalse; }
34
34
  #endif
35
35
 
36
36
  #include "ca_op_powi.h"
37
+ #include "ca_op_cmplx64.h"
37
38
 
38
39
  /* ===== monop zero ============================================ */
39
40
 
@@ -3166,7 +3167,7 @@ ca_monop_abs_i_cmplx64_t (ca_size_t n, boolean8_t *m,
3166
3167
  if ( ! *pm ) {
3167
3168
  p1 = q1 + k*i1;
3168
3169
  p2 = q2 + k*i2;
3169
- { (*p2) = cabs((cmplx128_t)*p1); }
3170
+ { (*p2) = cabsf(*p1); }
3170
3171
  }
3171
3172
  }
3172
3173
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -3181,14 +3182,14 @@ ca_monop_abs_i_cmplx64_t (ca_size_t n, boolean8_t *m,
3181
3182
  #pragma omp simd
3182
3183
  for (k=0; k<n; k++) {
3183
3184
  p1 = q1 + k; p2 = q2 + k;
3184
- { (*p2) = cabs((cmplx128_t)*p1); }
3185
+ { (*p2) = cabsf(*p1); }
3185
3186
  }
3186
3187
  } else {
3187
3188
  /* strided branch: numo-shape `p += s` increment form. */
3188
3189
  cmplx64_t *p1 = q1;
3189
3190
  cmplx64_t *p2 = q2;
3190
3191
  for (k=0; k<n; k++) {
3191
- { (*p2) = cabs((cmplx128_t)*p1); }
3192
+ { (*p2) = cabsf(*p1); }
3192
3193
  p1 += i1; p2 += i2;
3193
3194
  }
3194
3195
  }
@@ -3211,7 +3212,7 @@ ca_monop_abs_i_cmplx128_t (ca_size_t n, boolean8_t *m,
3211
3212
  if ( ! *pm ) {
3212
3213
  p1 = q1 + k*i1;
3213
3214
  p2 = q2 + k*i2;
3214
- { (*p2) = cabs((cmplx128_t)*p1); }
3215
+ { (*p2) = cabs(*p1); }
3215
3216
  }
3216
3217
  }
3217
3218
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -3226,14 +3227,14 @@ ca_monop_abs_i_cmplx128_t (ca_size_t n, boolean8_t *m,
3226
3227
  #pragma omp simd
3227
3228
  for (k=0; k<n; k++) {
3228
3229
  p1 = q1 + k; p2 = q2 + k;
3229
- { (*p2) = cabs((cmplx128_t)*p1); }
3230
+ { (*p2) = cabs(*p1); }
3230
3231
  }
3231
3232
  } else {
3232
3233
  /* strided branch: numo-shape `p += s` increment form. */
3233
3234
  cmplx128_t *p1 = q1;
3234
3235
  cmplx128_t *p2 = q2;
3235
3236
  for (k=0; k<n; k++) {
3236
- { (*p2) = cabs((cmplx128_t)*p1); }
3237
+ { (*p2) = cabs(*p1); }
3237
3238
  p1 += i1; p2 += i2;
3238
3239
  }
3239
3240
  }
@@ -3772,18 +3773,18 @@ ca_monop_abs_cmplx64_t (ca_size_t n, boolean8_t *m,
3772
3773
  char * __restrict__ ptr2, ca_size_t i2)
3773
3774
  {
3774
3775
  cmplx64_t * __restrict__ q1 = (cmplx64_t *) ptr1;
3775
- double * __restrict__ q2 = (double *) ptr2;
3776
+ float * __restrict__ q2 = (float *) ptr2;
3776
3777
  ca_size_t k;
3777
3778
  if ( m ) {
3778
3779
  cmplx64_t *p1 = q1;
3779
- double *p2 = q2;
3780
+ float *p2 = q2;
3780
3781
  boolean8_t *pm;
3781
3782
  for (k=0; k<n; k++) {
3782
3783
  pm = m + k;
3783
3784
  if ( ! *pm ) {
3784
3785
  p1 = q1 + k*i1;
3785
3786
  p2 = q2 + k*i2;
3786
- { (*p2) = cabs(*p1); }
3787
+ { (*p2) = cabsf(*p1); }
3787
3788
  }
3788
3789
  }
3789
3790
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -3793,19 +3794,19 @@ ca_monop_abs_cmplx64_t (ca_size_t n, boolean8_t *m,
3793
3794
  lane-parallel loads/stores. Element-wise monop has no
3794
3795
  reassoc, so ε-close numeric contract is unaffected. */
3795
3796
  cmplx64_t *p1;
3796
- double *p2;
3797
+ float *p2;
3797
3798
  (void)p1; (void)p2;
3798
3799
  #pragma omp simd
3799
3800
  for (k=0; k<n; k++) {
3800
3801
  p1 = q1 + k; p2 = q2 + k;
3801
- { (*p2) = cabs(*p1); }
3802
+ { (*p2) = cabsf(*p1); }
3802
3803
  }
3803
3804
  } else {
3804
3805
  /* strided branch: numo-shape `p += s` increment form. */
3805
3806
  cmplx64_t *p1 = q1;
3806
- double *p2 = q2;
3807
+ float *p2 = q2;
3807
3808
  for (k=0; k<n; k++) {
3808
- { (*p2) = cabs(*p1); }
3809
+ { (*p2) = cabsf(*p1); }
3809
3810
  p1 += i1; p2 += i2;
3810
3811
  }
3811
3812
  }
@@ -3891,7 +3892,7 @@ int8_t ca_monop_abs_out_data_type[CA_NTYPE] = {
3891
3892
  CA_FLOAT32,
3892
3893
  CA_FLOAT64,
3893
3894
  -1,
3894
- CA_FLOAT64,
3895
+ CA_FLOAT32,
3895
3896
  CA_FLOAT64,
3896
3897
  -1,
3897
3898
  -1,
@@ -4380,18 +4381,18 @@ ca_monop_abs2_cmplx64_t (ca_size_t n, boolean8_t *m,
4380
4381
  char * __restrict__ ptr2, ca_size_t i2)
4381
4382
  {
4382
4383
  cmplx64_t * __restrict__ q1 = (cmplx64_t *) ptr1;
4383
- double * __restrict__ q2 = (double *) ptr2;
4384
+ float * __restrict__ q2 = (float *) ptr2;
4384
4385
  ca_size_t k;
4385
4386
  if ( m ) {
4386
4387
  cmplx64_t *p1 = q1;
4387
- double *p2 = q2;
4388
+ float *p2 = q2;
4388
4389
  boolean8_t *pm;
4389
4390
  for (k=0; k<n; k++) {
4390
4391
  pm = m + k;
4391
4392
  if ( ! *pm ) {
4392
4393
  p1 = q1 + k*i1;
4393
4394
  p2 = q2 + k*i2;
4394
- { { double _r = creal(*p1); double _i = cimag(*p1); (*p2) = _r * _r + _i * _i; } }
4395
+ { { float _r = crealf(*p1); float _i = cimagf(*p1); (*p2) = _r * _r + _i * _i; } }
4395
4396
  }
4396
4397
  }
4397
4398
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -4401,19 +4402,19 @@ ca_monop_abs2_cmplx64_t (ca_size_t n, boolean8_t *m,
4401
4402
  lane-parallel loads/stores. Element-wise monop has no
4402
4403
  reassoc, so ε-close numeric contract is unaffected. */
4403
4404
  cmplx64_t *p1;
4404
- double *p2;
4405
+ float *p2;
4405
4406
  (void)p1; (void)p2;
4406
4407
  #pragma omp simd
4407
4408
  for (k=0; k<n; k++) {
4408
4409
  p1 = q1 + k; p2 = q2 + k;
4409
- { { double _r = creal(*p1); double _i = cimag(*p1); (*p2) = _r * _r + _i * _i; } }
4410
+ { { float _r = crealf(*p1); float _i = cimagf(*p1); (*p2) = _r * _r + _i * _i; } }
4410
4411
  }
4411
4412
  } else {
4412
4413
  /* strided branch: numo-shape `p += s` increment form. */
4413
4414
  cmplx64_t *p1 = q1;
4414
- double *p2 = q2;
4415
+ float *p2 = q2;
4415
4416
  for (k=0; k<n; k++) {
4416
- { { double _r = creal(*p1); double _i = cimag(*p1); (*p2) = _r * _r + _i * _i; } }
4417
+ { { float _r = crealf(*p1); float _i = cimagf(*p1); (*p2) = _r * _r + _i * _i; } }
4417
4418
  p1 += i1; p2 += i2;
4418
4419
  }
4419
4420
  }
@@ -4499,7 +4500,7 @@ int8_t ca_monop_abs2_out_data_type[CA_NTYPE] = {
4499
4500
  CA_FLOAT32,
4500
4501
  CA_FLOAT64,
4501
4502
  -1,
4502
- CA_FLOAT64,
4503
+ CA_FLOAT32,
4503
4504
  CA_FLOAT64,
4504
4505
  -1,
4505
4506
  -1,
@@ -4999,7 +5000,7 @@ ca_monop_conj_cmplx64_t (ca_size_t n, boolean8_t *m,
4999
5000
  if ( ! *pm ) {
5000
5001
  p1 = q1 + k*i1;
5001
5002
  p2 = q2 + k*i2;
5002
- { (*p2) = conj(*p1); }
5003
+ { (*p2) = conjf(*p1); }
5003
5004
  }
5004
5005
  }
5005
5006
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -5014,14 +5015,14 @@ ca_monop_conj_cmplx64_t (ca_size_t n, boolean8_t *m,
5014
5015
  #pragma omp simd
5015
5016
  for (k=0; k<n; k++) {
5016
5017
  p1 = q1 + k; p2 = q2 + k;
5017
- { (*p2) = conj(*p1); }
5018
+ { (*p2) = conjf(*p1); }
5018
5019
  }
5019
5020
  } else {
5020
5021
  /* strided branch: numo-shape `p += s` increment form. */
5021
5022
  cmplx64_t *p1 = q1;
5022
5023
  cmplx64_t *p2 = q2;
5023
5024
  for (k=0; k<n; k++) {
5024
- { (*p2) = conj(*p1); }
5025
+ { (*p2) = conjf(*p1); }
5025
5026
  p1 += i1; p2 += i2;
5026
5027
  }
5027
5028
  }
@@ -5661,7 +5662,7 @@ ca_monop_sign_cmplx64_t (ca_size_t n, boolean8_t *m,
5661
5662
  if ( ! *pm ) {
5662
5663
  p1 = q1 + k*i1;
5663
5664
  p2 = q2 + k*i2;
5664
- { { double _m = cabs(*p1); (*p2) = (_m == 0.0) ? 0 : ((*p1) / _m); } }
5665
+ { { float _m = cabsf(*p1); (*p2) = (_m == 0) ? 0 : ((*p1) / _m); } }
5665
5666
  }
5666
5667
  }
5667
5668
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -5676,14 +5677,14 @@ ca_monop_sign_cmplx64_t (ca_size_t n, boolean8_t *m,
5676
5677
  #pragma omp simd
5677
5678
  for (k=0; k<n; k++) {
5678
5679
  p1 = q1 + k; p2 = q2 + k;
5679
- { { double _m = cabs(*p1); (*p2) = (_m == 0.0) ? 0 : ((*p1) / _m); } }
5680
+ { { float _m = cabsf(*p1); (*p2) = (_m == 0) ? 0 : ((*p1) / _m); } }
5680
5681
  }
5681
5682
  } else {
5682
5683
  /* strided branch: numo-shape `p += s` increment form. */
5683
5684
  cmplx64_t *p1 = q1;
5684
5685
  cmplx64_t *p2 = q2;
5685
5686
  for (k=0; k<n; k++) {
5686
- { { double _m = cabs(*p1); (*p2) = (_m == 0.0) ? 0 : ((*p1) / _m); } }
5687
+ { { float _m = cabsf(*p1); (*p2) = (_m == 0) ? 0 : ((*p1) / _m); } }
5687
5688
  p1 += i1; p2 += i2;
5688
5689
  }
5689
5690
  }
@@ -5706,7 +5707,7 @@ ca_monop_sign_cmplx128_t (ca_size_t n, boolean8_t *m,
5706
5707
  if ( ! *pm ) {
5707
5708
  p1 = q1 + k*i1;
5708
5709
  p2 = q2 + k*i2;
5709
- { { double _m = cabs(*p1); (*p2) = (_m == 0.0) ? 0 : ((*p1) / _m); } }
5710
+ { { double _m = cabs(*p1); (*p2) = (_m == 0) ? 0 : ((*p1) / _m); } }
5710
5711
  }
5711
5712
  }
5712
5713
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -5721,14 +5722,14 @@ ca_monop_sign_cmplx128_t (ca_size_t n, boolean8_t *m,
5721
5722
  #pragma omp simd
5722
5723
  for (k=0; k<n; k++) {
5723
5724
  p1 = q1 + k; p2 = q2 + k;
5724
- { { double _m = cabs(*p1); (*p2) = (_m == 0.0) ? 0 : ((*p1) / _m); } }
5725
+ { { double _m = cabs(*p1); (*p2) = (_m == 0) ? 0 : ((*p1) / _m); } }
5725
5726
  }
5726
5727
  } else {
5727
5728
  /* strided branch: numo-shape `p += s` increment form. */
5728
5729
  cmplx128_t *p1 = q1;
5729
5730
  cmplx128_t *p2 = q2;
5730
5731
  for (k=0; k<n; k++) {
5731
- { { double _m = cabs(*p1); (*p2) = (_m == 0.0) ? 0 : ((*p1) / _m); } }
5732
+ { { double _m = cabs(*p1); (*p2) = (_m == 0) ? 0 : ((*p1) / _m); } }
5732
5733
  p1 += i1; p2 += i2;
5733
5734
  }
5734
5735
  }
@@ -6132,11 +6133,11 @@ ca_monop_arg_float32_t (ca_size_t n, boolean8_t *m,
6132
6133
  char * __restrict__ ptr2, ca_size_t i2)
6133
6134
  {
6134
6135
  float * __restrict__ q1 = (float *) ptr1;
6135
- double * __restrict__ q2 = (double *) ptr2;
6136
+ float * __restrict__ q2 = (float *) ptr2;
6136
6137
  ca_size_t k;
6137
6138
  if ( m ) {
6138
6139
  float *p1 = q1;
6139
- double *p2 = q2;
6140
+ float *p2 = q2;
6140
6141
  boolean8_t *pm;
6141
6142
  for (k=0; k<n; k++) {
6142
6143
  pm = m + k;
@@ -6153,7 +6154,7 @@ ca_monop_arg_float32_t (ca_size_t n, boolean8_t *m,
6153
6154
  lane-parallel loads/stores. Element-wise monop has no
6154
6155
  reassoc, so ε-close numeric contract is unaffected. */
6155
6156
  float *p1;
6156
- double *p2;
6157
+ float *p2;
6157
6158
  (void)p1; (void)p2;
6158
6159
  #pragma omp simd
6159
6160
  for (k=0; k<n; k++) {
@@ -6163,7 +6164,7 @@ ca_monop_arg_float32_t (ca_size_t n, boolean8_t *m,
6163
6164
  } else {
6164
6165
  /* strided branch: numo-shape `p += s` increment form. */
6165
6166
  float *p1 = q1;
6166
- double *p2 = q2;
6167
+ float *p2 = q2;
6167
6168
  for (k=0; k<n; k++) {
6168
6169
  { (*p2) = carg((cmplx128_t)(*p1)); }
6169
6170
  p1 += i1; p2 += i2;
@@ -6222,18 +6223,18 @@ ca_monop_arg_cmplx64_t (ca_size_t n, boolean8_t *m,
6222
6223
  char * __restrict__ ptr2, ca_size_t i2)
6223
6224
  {
6224
6225
  cmplx64_t * __restrict__ q1 = (cmplx64_t *) ptr1;
6225
- double * __restrict__ q2 = (double *) ptr2;
6226
+ float * __restrict__ q2 = (float *) ptr2;
6226
6227
  ca_size_t k;
6227
6228
  if ( m ) {
6228
6229
  cmplx64_t *p1 = q1;
6229
- double *p2 = q2;
6230
+ float *p2 = q2;
6230
6231
  boolean8_t *pm;
6231
6232
  for (k=0; k<n; k++) {
6232
6233
  pm = m + k;
6233
6234
  if ( ! *pm ) {
6234
6235
  p1 = q1 + k*i1;
6235
6236
  p2 = q2 + k*i2;
6236
- { (*p2) = carg(*p1); }
6237
+ { (*p2) = cargf(*p1); }
6237
6238
  }
6238
6239
  }
6239
6240
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -6243,19 +6244,19 @@ ca_monop_arg_cmplx64_t (ca_size_t n, boolean8_t *m,
6243
6244
  lane-parallel loads/stores. Element-wise monop has no
6244
6245
  reassoc, so ε-close numeric contract is unaffected. */
6245
6246
  cmplx64_t *p1;
6246
- double *p2;
6247
+ float *p2;
6247
6248
  (void)p1; (void)p2;
6248
6249
  #pragma omp simd
6249
6250
  for (k=0; k<n; k++) {
6250
6251
  p1 = q1 + k; p2 = q2 + k;
6251
- { (*p2) = carg(*p1); }
6252
+ { (*p2) = cargf(*p1); }
6252
6253
  }
6253
6254
  } else {
6254
6255
  /* strided branch: numo-shape `p += s` increment form. */
6255
6256
  cmplx64_t *p1 = q1;
6256
- double *p2 = q2;
6257
+ float *p2 = q2;
6257
6258
  for (k=0; k<n; k++) {
6258
- { (*p2) = carg(*p1); }
6259
+ { (*p2) = cargf(*p1); }
6259
6260
  p1 += i1; p2 += i2;
6260
6261
  }
6261
6262
  }
@@ -6338,10 +6339,10 @@ int8_t ca_monop_arg_out_data_type[CA_NTYPE] = {
6338
6339
  CA_FLOAT64,
6339
6340
  CA_FLOAT64,
6340
6341
  CA_FLOAT64,
6341
- CA_FLOAT64,
6342
+ CA_FLOAT32,
6342
6343
  CA_FLOAT64,
6343
6344
  -1,
6344
- CA_FLOAT64,
6345
+ CA_FLOAT32,
6345
6346
  CA_FLOAT64,
6346
6347
  -1,
6347
6348
  -1,
@@ -6761,7 +6762,7 @@ ca_monop_imag_i_cmplx64_t (ca_size_t n, boolean8_t *m,
6761
6762
  if ( ! *pm ) {
6762
6763
  p1 = q1 + k*i1;
6763
6764
  p2 = q2 + k*i2;
6764
- { (*p2) = cimag(*p1); }
6765
+ { (*p2) = cimagf(*p1); }
6765
6766
  }
6766
6767
  }
6767
6768
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -6776,14 +6777,14 @@ ca_monop_imag_i_cmplx64_t (ca_size_t n, boolean8_t *m,
6776
6777
  #pragma omp simd
6777
6778
  for (k=0; k<n; k++) {
6778
6779
  p1 = q1 + k; p2 = q2 + k;
6779
- { (*p2) = cimag(*p1); }
6780
+ { (*p2) = cimagf(*p1); }
6780
6781
  }
6781
6782
  } else {
6782
6783
  /* strided branch: numo-shape `p += s` increment form. */
6783
6784
  cmplx64_t *p1 = q1;
6784
6785
  cmplx64_t *p2 = q2;
6785
6786
  for (k=0; k<n; k++) {
6786
- { (*p2) = cimag(*p1); }
6787
+ { (*p2) = cimagf(*p1); }
6787
6788
  p1 += i1; p2 += i2;
6788
6789
  }
6789
6790
  }
@@ -6928,7 +6929,7 @@ ca_monop_arg_i_float32_t (ca_size_t n, boolean8_t *m,
6928
6929
  if ( ! *pm ) {
6929
6930
  p1 = q1 + k*i1;
6930
6931
  p2 = q2 + k*i2;
6931
- { (*p2) = (float)carg((cmplx128_t)(*p1)); }
6932
+ { (*p2) = cargf((cmplx64_t)(*p1)); }
6932
6933
  }
6933
6934
  }
6934
6935
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -6943,14 +6944,14 @@ ca_monop_arg_i_float32_t (ca_size_t n, boolean8_t *m,
6943
6944
  #pragma omp simd
6944
6945
  for (k=0; k<n; k++) {
6945
6946
  p1 = q1 + k; p2 = q2 + k;
6946
- { (*p2) = (float)carg((cmplx128_t)(*p1)); }
6947
+ { (*p2) = cargf((cmplx64_t)(*p1)); }
6947
6948
  }
6948
6949
  } else {
6949
6950
  /* strided branch: numo-shape `p += s` increment form. */
6950
6951
  float *p1 = q1;
6951
6952
  float *p2 = q2;
6952
6953
  for (k=0; k<n; k++) {
6953
- { (*p2) = (float)carg((cmplx128_t)(*p1)); }
6954
+ { (*p2) = cargf((cmplx64_t)(*p1)); }
6954
6955
  p1 += i1; p2 += i2;
6955
6956
  }
6956
6957
  }
@@ -7018,7 +7019,7 @@ ca_monop_arg_i_cmplx64_t (ca_size_t n, boolean8_t *m,
7018
7019
  if ( ! *pm ) {
7019
7020
  p1 = q1 + k*i1;
7020
7021
  p2 = q2 + k*i2;
7021
- { (*p2) = (float)carg((cmplx128_t)(*p1)); }
7022
+ { (*p2) = cargf(*p1); }
7022
7023
  }
7023
7024
  }
7024
7025
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -7033,14 +7034,14 @@ ca_monop_arg_i_cmplx64_t (ca_size_t n, boolean8_t *m,
7033
7034
  #pragma omp simd
7034
7035
  for (k=0; k<n; k++) {
7035
7036
  p1 = q1 + k; p2 = q2 + k;
7036
- { (*p2) = (float)carg((cmplx128_t)(*p1)); }
7037
+ { (*p2) = cargf(*p1); }
7037
7038
  }
7038
7039
  } else {
7039
7040
  /* strided branch: numo-shape `p += s` increment form. */
7040
7041
  cmplx64_t *p1 = q1;
7041
7042
  cmplx64_t *p2 = q2;
7042
7043
  for (k=0; k<n; k++) {
7043
- { (*p2) = (float)carg((cmplx128_t)(*p1)); }
7044
+ { (*p2) = cargf(*p1); }
7044
7045
  p1 += i1; p2 += i2;
7045
7046
  }
7046
7047
  }
@@ -9695,7 +9696,7 @@ ca_monop_rcp_cmplx64_t (ca_size_t n, boolean8_t *m,
9695
9696
  if ( ! *pm ) {
9696
9697
  p1 = q1 + k*i1;
9697
9698
  p2 = q2 + k*i2;
9698
- { (*p2) = 1/(*p1); }
9699
+ { (*p2) = op_crcp_cmplx64(*p1); }
9699
9700
  }
9700
9701
  }
9701
9702
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -9710,14 +9711,14 @@ ca_monop_rcp_cmplx64_t (ca_size_t n, boolean8_t *m,
9710
9711
  #pragma omp simd
9711
9712
  for (k=0; k<n; k++) {
9712
9713
  p1 = q1 + k; p2 = q2 + k;
9713
- { (*p2) = 1/(*p1); }
9714
+ { (*p2) = op_crcp_cmplx64(*p1); }
9714
9715
  }
9715
9716
  } else {
9716
9717
  /* strided branch: numo-shape `p += s` increment form. */
9717
9718
  cmplx64_t *p1 = q1;
9718
9719
  cmplx64_t *p2 = q2;
9719
9720
  for (k=0; k<n; k++) {
9720
- { (*p2) = 1/(*p1); }
9721
+ { (*p2) = op_crcp_cmplx64(*p1); }
9721
9722
  p1 += i1; p2 += i2;
9722
9723
  }
9723
9724
  }
@@ -9862,7 +9863,7 @@ ca_monop_sqrt_float32_t (ca_size_t n, boolean8_t *m,
9862
9863
  if ( ! *pm ) {
9863
9864
  p1 = q1 + k*i1;
9864
9865
  p2 = q2 + k*i2;
9865
- { (*p2) = sqrt(*p1); }
9866
+ { (*p2) = sqrtf(*p1); }
9866
9867
  }
9867
9868
  }
9868
9869
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -9877,14 +9878,14 @@ ca_monop_sqrt_float32_t (ca_size_t n, boolean8_t *m,
9877
9878
  #pragma omp simd
9878
9879
  for (k=0; k<n; k++) {
9879
9880
  p1 = q1 + k; p2 = q2 + k;
9880
- { (*p2) = sqrt(*p1); }
9881
+ { (*p2) = sqrtf(*p1); }
9881
9882
  }
9882
9883
  } else {
9883
9884
  /* strided branch: numo-shape `p += s` increment form. */
9884
9885
  float *p1 = q1;
9885
9886
  float *p2 = q2;
9886
9887
  for (k=0; k<n; k++) {
9887
- { (*p2) = sqrt(*p1); }
9888
+ { (*p2) = sqrtf(*p1); }
9888
9889
  p1 += i1; p2 += i2;
9889
9890
  }
9890
9891
  }
@@ -9952,7 +9953,7 @@ ca_monop_sqrt_cmplx64_t (ca_size_t n, boolean8_t *m,
9952
9953
  if ( ! *pm ) {
9953
9954
  p1 = q1 + k*i1;
9954
9955
  p2 = q2 + k*i2;
9955
- { (*p2) = csqrt(*p1); }
9956
+ { (*p2) = csqrtf(*p1); }
9956
9957
  }
9957
9958
  }
9958
9959
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -9967,14 +9968,14 @@ ca_monop_sqrt_cmplx64_t (ca_size_t n, boolean8_t *m,
9967
9968
  #pragma omp simd
9968
9969
  for (k=0; k<n; k++) {
9969
9970
  p1 = q1 + k; p2 = q2 + k;
9970
- { (*p2) = csqrt(*p1); }
9971
+ { (*p2) = csqrtf(*p1); }
9971
9972
  }
9972
9973
  } else {
9973
9974
  /* strided branch: numo-shape `p += s` increment form. */
9974
9975
  cmplx64_t *p1 = q1;
9975
9976
  cmplx64_t *p2 = q2;
9976
9977
  for (k=0; k<n; k++) {
9977
- { (*p2) = csqrt(*p1); }
9978
+ { (*p2) = csqrtf(*p1); }
9978
9979
  p1 += i1; p2 += i2;
9979
9980
  }
9980
9981
  }
@@ -10148,7 +10149,7 @@ ca_monop_exp_float32_t (ca_size_t n, boolean8_t *m,
10148
10149
  if ( ! *pm ) {
10149
10150
  p1 = q1 + k*i1;
10150
10151
  p2 = q2 + k*i2;
10151
- { (*p2) = exp(*p1); }
10152
+ { (*p2) = expf(*p1); }
10152
10153
  }
10153
10154
  }
10154
10155
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -10163,14 +10164,14 @@ ca_monop_exp_float32_t (ca_size_t n, boolean8_t *m,
10163
10164
  #pragma omp simd
10164
10165
  for (k=0; k<n; k++) {
10165
10166
  p1 = q1 + k; p2 = q2 + k;
10166
- { (*p2) = exp(*p1); }
10167
+ { (*p2) = expf(*p1); }
10167
10168
  }
10168
10169
  } else {
10169
10170
  /* strided branch: numo-shape `p += s` increment form. */
10170
10171
  float *p1 = q1;
10171
10172
  float *p2 = q2;
10172
10173
  for (k=0; k<n; k++) {
10173
- { (*p2) = exp(*p1); }
10174
+ { (*p2) = expf(*p1); }
10174
10175
  p1 += i1; p2 += i2;
10175
10176
  }
10176
10177
  }
@@ -10238,7 +10239,7 @@ ca_monop_exp_cmplx64_t (ca_size_t n, boolean8_t *m,
10238
10239
  if ( ! *pm ) {
10239
10240
  p1 = q1 + k*i1;
10240
10241
  p2 = q2 + k*i2;
10241
- { (*p2) = cexp(*p1); }
10242
+ { (*p2) = cexpf(*p1); }
10242
10243
  }
10243
10244
  }
10244
10245
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -10253,14 +10254,14 @@ ca_monop_exp_cmplx64_t (ca_size_t n, boolean8_t *m,
10253
10254
  #pragma omp simd
10254
10255
  for (k=0; k<n; k++) {
10255
10256
  p1 = q1 + k; p2 = q2 + k;
10256
- { (*p2) = cexp(*p1); }
10257
+ { (*p2) = cexpf(*p1); }
10257
10258
  }
10258
10259
  } else {
10259
10260
  /* strided branch: numo-shape `p += s` increment form. */
10260
10261
  cmplx64_t *p1 = q1;
10261
10262
  cmplx64_t *p2 = q2;
10262
10263
  for (k=0; k<n; k++) {
10263
- { (*p2) = cexp(*p1); }
10264
+ { (*p2) = cexpf(*p1); }
10264
10265
  p1 += i1; p2 += i2;
10265
10266
  }
10266
10267
  }
@@ -10415,10 +10416,10 @@ VALUE rb_ca_exp_bang (VALUE self)
10415
10416
  VALUE rb_cmath_exp (VALUE mod, VALUE arg)
10416
10417
  { return ca_math_call(mod, arg, rb_intern("exp")); }
10417
10418
 
10418
- /* ===== monop log ============================================ */
10419
+ /* ===== monop sin ============================================ */
10419
10420
 
10420
10421
  static void
10421
- ca_monop_log_float32_t (ca_size_t n, boolean8_t *m,
10422
+ ca_monop_sin_float32_t (ca_size_t n, boolean8_t *m,
10422
10423
  char * __restrict__ ptr1, ca_size_t i1,
10423
10424
  char * __restrict__ ptr2, ca_size_t i2)
10424
10425
  {
@@ -10434,7 +10435,7 @@ ca_monop_log_float32_t (ca_size_t n, boolean8_t *m,
10434
10435
  if ( ! *pm ) {
10435
10436
  p1 = q1 + k*i1;
10436
10437
  p2 = q2 + k*i2;
10437
- { (*p2) = log(*p1); }
10438
+ { (*p2) = sinf(*p1); }
10438
10439
  }
10439
10440
  }
10440
10441
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -10449,21 +10450,21 @@ ca_monop_log_float32_t (ca_size_t n, boolean8_t *m,
10449
10450
  #pragma omp simd
10450
10451
  for (k=0; k<n; k++) {
10451
10452
  p1 = q1 + k; p2 = q2 + k;
10452
- { (*p2) = log(*p1); }
10453
+ { (*p2) = sinf(*p1); }
10453
10454
  }
10454
10455
  } else {
10455
10456
  /* strided branch: numo-shape `p += s` increment form. */
10456
10457
  float *p1 = q1;
10457
10458
  float *p2 = q2;
10458
10459
  for (k=0; k<n; k++) {
10459
- { (*p2) = log(*p1); }
10460
+ { (*p2) = sinf(*p1); }
10460
10461
  p1 += i1; p2 += i2;
10461
10462
  }
10462
10463
  }
10463
10464
  }
10464
10465
 
10465
10466
  static void
10466
- ca_monop_log_float64_t (ca_size_t n, boolean8_t *m,
10467
+ ca_monop_sin_float64_t (ca_size_t n, boolean8_t *m,
10467
10468
  char * __restrict__ ptr1, ca_size_t i1,
10468
10469
  char * __restrict__ ptr2, ca_size_t i2)
10469
10470
  {
@@ -10479,7 +10480,7 @@ ca_monop_log_float64_t (ca_size_t n, boolean8_t *m,
10479
10480
  if ( ! *pm ) {
10480
10481
  p1 = q1 + k*i1;
10481
10482
  p2 = q2 + k*i2;
10482
- { (*p2) = log(*p1); }
10483
+ { (*p2) = sin(*p1); }
10483
10484
  }
10484
10485
  }
10485
10486
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -10494,21 +10495,21 @@ ca_monop_log_float64_t (ca_size_t n, boolean8_t *m,
10494
10495
  #pragma omp simd
10495
10496
  for (k=0; k<n; k++) {
10496
10497
  p1 = q1 + k; p2 = q2 + k;
10497
- { (*p2) = log(*p1); }
10498
+ { (*p2) = sin(*p1); }
10498
10499
  }
10499
10500
  } else {
10500
10501
  /* strided branch: numo-shape `p += s` increment form. */
10501
10502
  double *p1 = q1;
10502
10503
  double *p2 = q2;
10503
10504
  for (k=0; k<n; k++) {
10504
- { (*p2) = log(*p1); }
10505
+ { (*p2) = sin(*p1); }
10505
10506
  p1 += i1; p2 += i2;
10506
10507
  }
10507
10508
  }
10508
10509
  }
10509
10510
 
10510
10511
  static void
10511
- ca_monop_log_cmplx64_t (ca_size_t n, boolean8_t *m,
10512
+ ca_monop_sin_cmplx64_t (ca_size_t n, boolean8_t *m,
10512
10513
  char * __restrict__ ptr1, ca_size_t i1,
10513
10514
  char * __restrict__ ptr2, ca_size_t i2)
10514
10515
  {
@@ -10524,7 +10525,7 @@ ca_monop_log_cmplx64_t (ca_size_t n, boolean8_t *m,
10524
10525
  if ( ! *pm ) {
10525
10526
  p1 = q1 + k*i1;
10526
10527
  p2 = q2 + k*i2;
10527
- { (*p2) = clog(*p1); }
10528
+ { (*p2) = csinf(*p1); }
10528
10529
  }
10529
10530
  }
10530
10531
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -10539,21 +10540,21 @@ ca_monop_log_cmplx64_t (ca_size_t n, boolean8_t *m,
10539
10540
  #pragma omp simd
10540
10541
  for (k=0; k<n; k++) {
10541
10542
  p1 = q1 + k; p2 = q2 + k;
10542
- { (*p2) = clog(*p1); }
10543
+ { (*p2) = csinf(*p1); }
10543
10544
  }
10544
10545
  } else {
10545
10546
  /* strided branch: numo-shape `p += s` increment form. */
10546
10547
  cmplx64_t *p1 = q1;
10547
10548
  cmplx64_t *p2 = q2;
10548
10549
  for (k=0; k<n; k++) {
10549
- { (*p2) = clog(*p1); }
10550
+ { (*p2) = csinf(*p1); }
10550
10551
  p1 += i1; p2 += i2;
10551
10552
  }
10552
10553
  }
10553
10554
  }
10554
10555
 
10555
10556
  static void
10556
- ca_monop_log_cmplx128_t (ca_size_t n, boolean8_t *m,
10557
+ ca_monop_sin_cmplx128_t (ca_size_t n, boolean8_t *m,
10557
10558
  char * __restrict__ ptr1, ca_size_t i1,
10558
10559
  char * __restrict__ ptr2, ca_size_t i2)
10559
10560
  {
@@ -10569,7 +10570,7 @@ ca_monop_log_cmplx128_t (ca_size_t n, boolean8_t *m,
10569
10570
  if ( ! *pm ) {
10570
10571
  p1 = q1 + k*i1;
10571
10572
  p2 = q2 + k*i2;
10572
- { (*p2) = clog(*p1); }
10573
+ { (*p2) = csin(*p1); }
10573
10574
  }
10574
10575
  }
10575
10576
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -10584,21 +10585,21 @@ ca_monop_log_cmplx128_t (ca_size_t n, boolean8_t *m,
10584
10585
  #pragma omp simd
10585
10586
  for (k=0; k<n; k++) {
10586
10587
  p1 = q1 + k; p2 = q2 + k;
10587
- { (*p2) = clog(*p1); }
10588
+ { (*p2) = csin(*p1); }
10588
10589
  }
10589
10590
  } else {
10590
10591
  /* strided branch: numo-shape `p += s` increment form. */
10591
10592
  cmplx128_t *p1 = q1;
10592
10593
  cmplx128_t *p2 = q2;
10593
10594
  for (k=0; k<n; k++) {
10594
- { (*p2) = clog(*p1); }
10595
+ { (*p2) = csin(*p1); }
10595
10596
  p1 += i1; p2 += i2;
10596
10597
  }
10597
10598
  }
10598
10599
  }
10599
10600
 
10600
10601
  static void
10601
- ca_monop_log_VALUE (ca_size_t n, boolean8_t *m,
10602
+ ca_monop_sin_VALUE (ca_size_t n, boolean8_t *m,
10602
10603
  char * __restrict__ ptr1, ca_size_t i1,
10603
10604
  char * __restrict__ ptr2, ca_size_t i2)
10604
10605
  {
@@ -10617,9 +10618,9 @@ ca_monop_log_VALUE (ca_size_t n, boolean8_t *m,
10617
10618
  { {
10618
10619
  VALUE _obj_arg = (*p1);
10619
10620
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
10620
- (*p2) = DBL2NUM(log(NUM2DBL(_obj_arg)));
10621
+ (*p2) = DBL2NUM(sin(NUM2DBL(_obj_arg)));
10621
10622
  } else {
10622
- (*p2) = rb_funcall(_obj_arg, rb_intern("log"), 0);
10623
+ (*p2) = rb_funcall(_obj_arg, rb_intern("sin"), 0);
10623
10624
  }
10624
10625
  }
10625
10626
  }
@@ -10640,9 +10641,9 @@ ca_monop_log_VALUE (ca_size_t n, boolean8_t *m,
10640
10641
  { {
10641
10642
  VALUE _obj_arg = (*p1);
10642
10643
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
10643
- (*p2) = DBL2NUM(log(NUM2DBL(_obj_arg)));
10644
+ (*p2) = DBL2NUM(sin(NUM2DBL(_obj_arg)));
10644
10645
  } else {
10645
- (*p2) = rb_funcall(_obj_arg, rb_intern("log"), 0);
10646
+ (*p2) = rb_funcall(_obj_arg, rb_intern("sin"), 0);
10646
10647
  }
10647
10648
  }
10648
10649
  }
@@ -10655,9 +10656,9 @@ ca_monop_log_VALUE (ca_size_t n, boolean8_t *m,
10655
10656
  { {
10656
10657
  VALUE _obj_arg = (*p1);
10657
10658
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
10658
- (*p2) = DBL2NUM(log(NUM2DBL(_obj_arg)));
10659
+ (*p2) = DBL2NUM(sin(NUM2DBL(_obj_arg)));
10659
10660
  } else {
10660
- (*p2) = rb_funcall(_obj_arg, rb_intern("log"), 0);
10661
+ (*p2) = rb_funcall(_obj_arg, rb_intern("sin"), 0);
10661
10662
  }
10662
10663
  }
10663
10664
  }
@@ -10667,7 +10668,7 @@ ca_monop_log_VALUE (ca_size_t n, boolean8_t *m,
10667
10668
  }
10668
10669
 
10669
10670
  ca_monop_func_t
10670
- ca_monop_log[CA_NTYPE] = {
10671
+ ca_monop_sin[CA_NTYPE] = {
10671
10672
  ca_monop_not_implement,
10672
10673
  ca_monop_not_implement,
10673
10674
  ca_monop_not_implement,
@@ -10678,33 +10679,33 @@ ca_monop_log[CA_NTYPE] = {
10678
10679
  ca_monop_not_implement,
10679
10680
  ca_monop_not_implement,
10680
10681
  ca_monop_not_implement,
10681
- ca_monop_log_float32_t,
10682
- ca_monop_log_float64_t,
10682
+ ca_monop_sin_float32_t,
10683
+ ca_monop_sin_float64_t,
10683
10684
  ca_monop_not_implement,
10684
- ca_monop_log_cmplx64_t,
10685
- ca_monop_log_cmplx128_t,
10685
+ ca_monop_sin_cmplx64_t,
10686
+ ca_monop_sin_cmplx128_t,
10686
10687
  ca_monop_not_implement,
10687
- ca_monop_log_VALUE,
10688
+ ca_monop_sin_VALUE,
10688
10689
  };
10689
10690
 
10690
- VALUE rb_ca_log (VALUE self)
10691
+ VALUE rb_ca_sin (VALUE self)
10691
10692
  {
10692
10693
  if ( rb_ca_is_integer_type(self) ) {
10693
10694
  self = rb_ca_wrap_readonly(self, INT2NUM(CA_FLOAT64));
10694
10695
  }
10695
- return rb_ca_call_monop(self, ca_monop_log);
10696
+ return rb_ca_call_monop(self, ca_monop_sin);
10696
10697
  }
10697
10698
 
10698
- VALUE rb_ca_log_bang (VALUE self)
10699
- { return rb_ca_call_monop_bang(self, ca_monop_log); }
10699
+ VALUE rb_ca_sin_bang (VALUE self)
10700
+ { return rb_ca_call_monop_bang(self, ca_monop_sin); }
10700
10701
 
10701
- VALUE rb_cmath_log (VALUE mod, VALUE arg)
10702
- { return ca_math_call(mod, arg, rb_intern("log")); }
10702
+ VALUE rb_cmath_sin (VALUE mod, VALUE arg)
10703
+ { return ca_math_call(mod, arg, rb_intern("sin")); }
10703
10704
 
10704
- /* ===== monop sin ============================================ */
10705
+ /* ===== monop cos ============================================ */
10705
10706
 
10706
10707
  static void
10707
- ca_monop_sin_float32_t (ca_size_t n, boolean8_t *m,
10708
+ ca_monop_cos_float32_t (ca_size_t n, boolean8_t *m,
10708
10709
  char * __restrict__ ptr1, ca_size_t i1,
10709
10710
  char * __restrict__ ptr2, ca_size_t i2)
10710
10711
  {
@@ -10720,7 +10721,7 @@ ca_monop_sin_float32_t (ca_size_t n, boolean8_t *m,
10720
10721
  if ( ! *pm ) {
10721
10722
  p1 = q1 + k*i1;
10722
10723
  p2 = q2 + k*i2;
10723
- { (*p2) = sin(*p1); }
10724
+ { (*p2) = cosf(*p1); }
10724
10725
  }
10725
10726
  }
10726
10727
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -10735,21 +10736,21 @@ ca_monop_sin_float32_t (ca_size_t n, boolean8_t *m,
10735
10736
  #pragma omp simd
10736
10737
  for (k=0; k<n; k++) {
10737
10738
  p1 = q1 + k; p2 = q2 + k;
10738
- { (*p2) = sin(*p1); }
10739
+ { (*p2) = cosf(*p1); }
10739
10740
  }
10740
10741
  } else {
10741
10742
  /* strided branch: numo-shape `p += s` increment form. */
10742
10743
  float *p1 = q1;
10743
10744
  float *p2 = q2;
10744
10745
  for (k=0; k<n; k++) {
10745
- { (*p2) = sin(*p1); }
10746
+ { (*p2) = cosf(*p1); }
10746
10747
  p1 += i1; p2 += i2;
10747
10748
  }
10748
10749
  }
10749
10750
  }
10750
10751
 
10751
10752
  static void
10752
- ca_monop_sin_float64_t (ca_size_t n, boolean8_t *m,
10753
+ ca_monop_cos_float64_t (ca_size_t n, boolean8_t *m,
10753
10754
  char * __restrict__ ptr1, ca_size_t i1,
10754
10755
  char * __restrict__ ptr2, ca_size_t i2)
10755
10756
  {
@@ -10765,7 +10766,7 @@ ca_monop_sin_float64_t (ca_size_t n, boolean8_t *m,
10765
10766
  if ( ! *pm ) {
10766
10767
  p1 = q1 + k*i1;
10767
10768
  p2 = q2 + k*i2;
10768
- { (*p2) = sin(*p1); }
10769
+ { (*p2) = cos(*p1); }
10769
10770
  }
10770
10771
  }
10771
10772
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -10780,21 +10781,21 @@ ca_monop_sin_float64_t (ca_size_t n, boolean8_t *m,
10780
10781
  #pragma omp simd
10781
10782
  for (k=0; k<n; k++) {
10782
10783
  p1 = q1 + k; p2 = q2 + k;
10783
- { (*p2) = sin(*p1); }
10784
+ { (*p2) = cos(*p1); }
10784
10785
  }
10785
10786
  } else {
10786
10787
  /* strided branch: numo-shape `p += s` increment form. */
10787
10788
  double *p1 = q1;
10788
10789
  double *p2 = q2;
10789
10790
  for (k=0; k<n; k++) {
10790
- { (*p2) = sin(*p1); }
10791
+ { (*p2) = cos(*p1); }
10791
10792
  p1 += i1; p2 += i2;
10792
10793
  }
10793
10794
  }
10794
10795
  }
10795
10796
 
10796
10797
  static void
10797
- ca_monop_sin_cmplx64_t (ca_size_t n, boolean8_t *m,
10798
+ ca_monop_cos_cmplx64_t (ca_size_t n, boolean8_t *m,
10798
10799
  char * __restrict__ ptr1, ca_size_t i1,
10799
10800
  char * __restrict__ ptr2, ca_size_t i2)
10800
10801
  {
@@ -10810,7 +10811,7 @@ ca_monop_sin_cmplx64_t (ca_size_t n, boolean8_t *m,
10810
10811
  if ( ! *pm ) {
10811
10812
  p1 = q1 + k*i1;
10812
10813
  p2 = q2 + k*i2;
10813
- { (*p2) = csin(*p1); }
10814
+ { (*p2) = ccosf(*p1); }
10814
10815
  }
10815
10816
  }
10816
10817
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -10825,21 +10826,21 @@ ca_monop_sin_cmplx64_t (ca_size_t n, boolean8_t *m,
10825
10826
  #pragma omp simd
10826
10827
  for (k=0; k<n; k++) {
10827
10828
  p1 = q1 + k; p2 = q2 + k;
10828
- { (*p2) = csin(*p1); }
10829
+ { (*p2) = ccosf(*p1); }
10829
10830
  }
10830
10831
  } else {
10831
10832
  /* strided branch: numo-shape `p += s` increment form. */
10832
10833
  cmplx64_t *p1 = q1;
10833
10834
  cmplx64_t *p2 = q2;
10834
10835
  for (k=0; k<n; k++) {
10835
- { (*p2) = csin(*p1); }
10836
+ { (*p2) = ccosf(*p1); }
10836
10837
  p1 += i1; p2 += i2;
10837
10838
  }
10838
10839
  }
10839
10840
  }
10840
10841
 
10841
10842
  static void
10842
- ca_monop_sin_cmplx128_t (ca_size_t n, boolean8_t *m,
10843
+ ca_monop_cos_cmplx128_t (ca_size_t n, boolean8_t *m,
10843
10844
  char * __restrict__ ptr1, ca_size_t i1,
10844
10845
  char * __restrict__ ptr2, ca_size_t i2)
10845
10846
  {
@@ -10855,7 +10856,7 @@ ca_monop_sin_cmplx128_t (ca_size_t n, boolean8_t *m,
10855
10856
  if ( ! *pm ) {
10856
10857
  p1 = q1 + k*i1;
10857
10858
  p2 = q2 + k*i2;
10858
- { (*p2) = csin(*p1); }
10859
+ { (*p2) = ccos(*p1); }
10859
10860
  }
10860
10861
  }
10861
10862
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -10870,21 +10871,21 @@ ca_monop_sin_cmplx128_t (ca_size_t n, boolean8_t *m,
10870
10871
  #pragma omp simd
10871
10872
  for (k=0; k<n; k++) {
10872
10873
  p1 = q1 + k; p2 = q2 + k;
10873
- { (*p2) = csin(*p1); }
10874
+ { (*p2) = ccos(*p1); }
10874
10875
  }
10875
10876
  } else {
10876
10877
  /* strided branch: numo-shape `p += s` increment form. */
10877
10878
  cmplx128_t *p1 = q1;
10878
10879
  cmplx128_t *p2 = q2;
10879
10880
  for (k=0; k<n; k++) {
10880
- { (*p2) = csin(*p1); }
10881
+ { (*p2) = ccos(*p1); }
10881
10882
  p1 += i1; p2 += i2;
10882
10883
  }
10883
10884
  }
10884
10885
  }
10885
10886
 
10886
10887
  static void
10887
- ca_monop_sin_VALUE (ca_size_t n, boolean8_t *m,
10888
+ ca_monop_cos_VALUE (ca_size_t n, boolean8_t *m,
10888
10889
  char * __restrict__ ptr1, ca_size_t i1,
10889
10890
  char * __restrict__ ptr2, ca_size_t i2)
10890
10891
  {
@@ -10903,9 +10904,9 @@ ca_monop_sin_VALUE (ca_size_t n, boolean8_t *m,
10903
10904
  { {
10904
10905
  VALUE _obj_arg = (*p1);
10905
10906
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
10906
- (*p2) = DBL2NUM(sin(NUM2DBL(_obj_arg)));
10907
+ (*p2) = DBL2NUM(cos(NUM2DBL(_obj_arg)));
10907
10908
  } else {
10908
- (*p2) = rb_funcall(_obj_arg, rb_intern("sin"), 0);
10909
+ (*p2) = rb_funcall(_obj_arg, rb_intern("cos"), 0);
10909
10910
  }
10910
10911
  }
10911
10912
  }
@@ -10926,9 +10927,9 @@ ca_monop_sin_VALUE (ca_size_t n, boolean8_t *m,
10926
10927
  { {
10927
10928
  VALUE _obj_arg = (*p1);
10928
10929
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
10929
- (*p2) = DBL2NUM(sin(NUM2DBL(_obj_arg)));
10930
+ (*p2) = DBL2NUM(cos(NUM2DBL(_obj_arg)));
10930
10931
  } else {
10931
- (*p2) = rb_funcall(_obj_arg, rb_intern("sin"), 0);
10932
+ (*p2) = rb_funcall(_obj_arg, rb_intern("cos"), 0);
10932
10933
  }
10933
10934
  }
10934
10935
  }
@@ -10941,9 +10942,9 @@ ca_monop_sin_VALUE (ca_size_t n, boolean8_t *m,
10941
10942
  { {
10942
10943
  VALUE _obj_arg = (*p1);
10943
10944
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
10944
- (*p2) = DBL2NUM(sin(NUM2DBL(_obj_arg)));
10945
+ (*p2) = DBL2NUM(cos(NUM2DBL(_obj_arg)));
10945
10946
  } else {
10946
- (*p2) = rb_funcall(_obj_arg, rb_intern("sin"), 0);
10947
+ (*p2) = rb_funcall(_obj_arg, rb_intern("cos"), 0);
10947
10948
  }
10948
10949
  }
10949
10950
  }
@@ -10953,7 +10954,7 @@ ca_monop_sin_VALUE (ca_size_t n, boolean8_t *m,
10953
10954
  }
10954
10955
 
10955
10956
  ca_monop_func_t
10956
- ca_monop_sin[CA_NTYPE] = {
10957
+ ca_monop_cos[CA_NTYPE] = {
10957
10958
  ca_monop_not_implement,
10958
10959
  ca_monop_not_implement,
10959
10960
  ca_monop_not_implement,
@@ -10964,33 +10965,33 @@ ca_monop_sin[CA_NTYPE] = {
10964
10965
  ca_monop_not_implement,
10965
10966
  ca_monop_not_implement,
10966
10967
  ca_monop_not_implement,
10967
- ca_monop_sin_float32_t,
10968
- ca_monop_sin_float64_t,
10968
+ ca_monop_cos_float32_t,
10969
+ ca_monop_cos_float64_t,
10969
10970
  ca_monop_not_implement,
10970
- ca_monop_sin_cmplx64_t,
10971
- ca_monop_sin_cmplx128_t,
10971
+ ca_monop_cos_cmplx64_t,
10972
+ ca_monop_cos_cmplx128_t,
10972
10973
  ca_monop_not_implement,
10973
- ca_monop_sin_VALUE,
10974
+ ca_monop_cos_VALUE,
10974
10975
  };
10975
10976
 
10976
- VALUE rb_ca_sin (VALUE self)
10977
+ VALUE rb_ca_cos (VALUE self)
10977
10978
  {
10978
10979
  if ( rb_ca_is_integer_type(self) ) {
10979
10980
  self = rb_ca_wrap_readonly(self, INT2NUM(CA_FLOAT64));
10980
10981
  }
10981
- return rb_ca_call_monop(self, ca_monop_sin);
10982
+ return rb_ca_call_monop(self, ca_monop_cos);
10982
10983
  }
10983
10984
 
10984
- VALUE rb_ca_sin_bang (VALUE self)
10985
- { return rb_ca_call_monop_bang(self, ca_monop_sin); }
10985
+ VALUE rb_ca_cos_bang (VALUE self)
10986
+ { return rb_ca_call_monop_bang(self, ca_monop_cos); }
10986
10987
 
10987
- VALUE rb_cmath_sin (VALUE mod, VALUE arg)
10988
- { return ca_math_call(mod, arg, rb_intern("sin")); }
10988
+ VALUE rb_cmath_cos (VALUE mod, VALUE arg)
10989
+ { return ca_math_call(mod, arg, rb_intern("cos")); }
10989
10990
 
10990
- /* ===== monop cos ============================================ */
10991
+ /* ===== monop tan ============================================ */
10991
10992
 
10992
10993
  static void
10993
- ca_monop_cos_float32_t (ca_size_t n, boolean8_t *m,
10994
+ ca_monop_tan_float32_t (ca_size_t n, boolean8_t *m,
10994
10995
  char * __restrict__ ptr1, ca_size_t i1,
10995
10996
  char * __restrict__ ptr2, ca_size_t i2)
10996
10997
  {
@@ -11006,7 +11007,7 @@ ca_monop_cos_float32_t (ca_size_t n, boolean8_t *m,
11006
11007
  if ( ! *pm ) {
11007
11008
  p1 = q1 + k*i1;
11008
11009
  p2 = q2 + k*i2;
11009
- { (*p2) = cos(*p1); }
11010
+ { (*p2) = tanf(*p1); }
11010
11011
  }
11011
11012
  }
11012
11013
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -11021,21 +11022,21 @@ ca_monop_cos_float32_t (ca_size_t n, boolean8_t *m,
11021
11022
  #pragma omp simd
11022
11023
  for (k=0; k<n; k++) {
11023
11024
  p1 = q1 + k; p2 = q2 + k;
11024
- { (*p2) = cos(*p1); }
11025
+ { (*p2) = tanf(*p1); }
11025
11026
  }
11026
11027
  } else {
11027
11028
  /* strided branch: numo-shape `p += s` increment form. */
11028
11029
  float *p1 = q1;
11029
11030
  float *p2 = q2;
11030
11031
  for (k=0; k<n; k++) {
11031
- { (*p2) = cos(*p1); }
11032
+ { (*p2) = tanf(*p1); }
11032
11033
  p1 += i1; p2 += i2;
11033
11034
  }
11034
11035
  }
11035
11036
  }
11036
11037
 
11037
11038
  static void
11038
- ca_monop_cos_float64_t (ca_size_t n, boolean8_t *m,
11039
+ ca_monop_tan_float64_t (ca_size_t n, boolean8_t *m,
11039
11040
  char * __restrict__ ptr1, ca_size_t i1,
11040
11041
  char * __restrict__ ptr2, ca_size_t i2)
11041
11042
  {
@@ -11051,7 +11052,7 @@ ca_monop_cos_float64_t (ca_size_t n, boolean8_t *m,
11051
11052
  if ( ! *pm ) {
11052
11053
  p1 = q1 + k*i1;
11053
11054
  p2 = q2 + k*i2;
11054
- { (*p2) = cos(*p1); }
11055
+ { (*p2) = tan(*p1); }
11055
11056
  }
11056
11057
  }
11057
11058
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -11066,21 +11067,21 @@ ca_monop_cos_float64_t (ca_size_t n, boolean8_t *m,
11066
11067
  #pragma omp simd
11067
11068
  for (k=0; k<n; k++) {
11068
11069
  p1 = q1 + k; p2 = q2 + k;
11069
- { (*p2) = cos(*p1); }
11070
+ { (*p2) = tan(*p1); }
11070
11071
  }
11071
11072
  } else {
11072
11073
  /* strided branch: numo-shape `p += s` increment form. */
11073
11074
  double *p1 = q1;
11074
11075
  double *p2 = q2;
11075
11076
  for (k=0; k<n; k++) {
11076
- { (*p2) = cos(*p1); }
11077
+ { (*p2) = tan(*p1); }
11077
11078
  p1 += i1; p2 += i2;
11078
11079
  }
11079
11080
  }
11080
11081
  }
11081
11082
 
11082
11083
  static void
11083
- ca_monop_cos_cmplx64_t (ca_size_t n, boolean8_t *m,
11084
+ ca_monop_tan_cmplx64_t (ca_size_t n, boolean8_t *m,
11084
11085
  char * __restrict__ ptr1, ca_size_t i1,
11085
11086
  char * __restrict__ ptr2, ca_size_t i2)
11086
11087
  {
@@ -11096,7 +11097,7 @@ ca_monop_cos_cmplx64_t (ca_size_t n, boolean8_t *m,
11096
11097
  if ( ! *pm ) {
11097
11098
  p1 = q1 + k*i1;
11098
11099
  p2 = q2 + k*i2;
11099
- { (*p2) = ccos(*p1); }
11100
+ { (*p2) = ctanf(*p1); }
11100
11101
  }
11101
11102
  }
11102
11103
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -11111,21 +11112,21 @@ ca_monop_cos_cmplx64_t (ca_size_t n, boolean8_t *m,
11111
11112
  #pragma omp simd
11112
11113
  for (k=0; k<n; k++) {
11113
11114
  p1 = q1 + k; p2 = q2 + k;
11114
- { (*p2) = ccos(*p1); }
11115
+ { (*p2) = ctanf(*p1); }
11115
11116
  }
11116
11117
  } else {
11117
11118
  /* strided branch: numo-shape `p += s` increment form. */
11118
11119
  cmplx64_t *p1 = q1;
11119
11120
  cmplx64_t *p2 = q2;
11120
11121
  for (k=0; k<n; k++) {
11121
- { (*p2) = ccos(*p1); }
11122
+ { (*p2) = ctanf(*p1); }
11122
11123
  p1 += i1; p2 += i2;
11123
11124
  }
11124
11125
  }
11125
11126
  }
11126
11127
 
11127
11128
  static void
11128
- ca_monop_cos_cmplx128_t (ca_size_t n, boolean8_t *m,
11129
+ ca_monop_tan_cmplx128_t (ca_size_t n, boolean8_t *m,
11129
11130
  char * __restrict__ ptr1, ca_size_t i1,
11130
11131
  char * __restrict__ ptr2, ca_size_t i2)
11131
11132
  {
@@ -11141,7 +11142,7 @@ ca_monop_cos_cmplx128_t (ca_size_t n, boolean8_t *m,
11141
11142
  if ( ! *pm ) {
11142
11143
  p1 = q1 + k*i1;
11143
11144
  p2 = q2 + k*i2;
11144
- { (*p2) = ccos(*p1); }
11145
+ { (*p2) = ctan(*p1); }
11145
11146
  }
11146
11147
  }
11147
11148
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -11156,21 +11157,21 @@ ca_monop_cos_cmplx128_t (ca_size_t n, boolean8_t *m,
11156
11157
  #pragma omp simd
11157
11158
  for (k=0; k<n; k++) {
11158
11159
  p1 = q1 + k; p2 = q2 + k;
11159
- { (*p2) = ccos(*p1); }
11160
+ { (*p2) = ctan(*p1); }
11160
11161
  }
11161
11162
  } else {
11162
11163
  /* strided branch: numo-shape `p += s` increment form. */
11163
11164
  cmplx128_t *p1 = q1;
11164
11165
  cmplx128_t *p2 = q2;
11165
11166
  for (k=0; k<n; k++) {
11166
- { (*p2) = ccos(*p1); }
11167
+ { (*p2) = ctan(*p1); }
11167
11168
  p1 += i1; p2 += i2;
11168
11169
  }
11169
11170
  }
11170
11171
  }
11171
11172
 
11172
11173
  static void
11173
- ca_monop_cos_VALUE (ca_size_t n, boolean8_t *m,
11174
+ ca_monop_tan_VALUE (ca_size_t n, boolean8_t *m,
11174
11175
  char * __restrict__ ptr1, ca_size_t i1,
11175
11176
  char * __restrict__ ptr2, ca_size_t i2)
11176
11177
  {
@@ -11189,9 +11190,9 @@ ca_monop_cos_VALUE (ca_size_t n, boolean8_t *m,
11189
11190
  { {
11190
11191
  VALUE _obj_arg = (*p1);
11191
11192
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
11192
- (*p2) = DBL2NUM(cos(NUM2DBL(_obj_arg)));
11193
+ (*p2) = DBL2NUM(tan(NUM2DBL(_obj_arg)));
11193
11194
  } else {
11194
- (*p2) = rb_funcall(_obj_arg, rb_intern("cos"), 0);
11195
+ (*p2) = rb_funcall(_obj_arg, rb_intern("tan"), 0);
11195
11196
  }
11196
11197
  }
11197
11198
  }
@@ -11212,9 +11213,9 @@ ca_monop_cos_VALUE (ca_size_t n, boolean8_t *m,
11212
11213
  { {
11213
11214
  VALUE _obj_arg = (*p1);
11214
11215
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
11215
- (*p2) = DBL2NUM(cos(NUM2DBL(_obj_arg)));
11216
+ (*p2) = DBL2NUM(tan(NUM2DBL(_obj_arg)));
11216
11217
  } else {
11217
- (*p2) = rb_funcall(_obj_arg, rb_intern("cos"), 0);
11218
+ (*p2) = rb_funcall(_obj_arg, rb_intern("tan"), 0);
11218
11219
  }
11219
11220
  }
11220
11221
  }
@@ -11227,9 +11228,9 @@ ca_monop_cos_VALUE (ca_size_t n, boolean8_t *m,
11227
11228
  { {
11228
11229
  VALUE _obj_arg = (*p1);
11229
11230
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
11230
- (*p2) = DBL2NUM(cos(NUM2DBL(_obj_arg)));
11231
+ (*p2) = DBL2NUM(tan(NUM2DBL(_obj_arg)));
11231
11232
  } else {
11232
- (*p2) = rb_funcall(_obj_arg, rb_intern("cos"), 0);
11233
+ (*p2) = rb_funcall(_obj_arg, rb_intern("tan"), 0);
11233
11234
  }
11234
11235
  }
11235
11236
  }
@@ -11239,8 +11240,7 @@ ca_monop_cos_VALUE (ca_size_t n, boolean8_t *m,
11239
11240
  }
11240
11241
 
11241
11242
  ca_monop_func_t
11242
- ca_monop_cos[CA_NTYPE] = {
11243
- ca_monop_not_implement,
11243
+ ca_monop_tan[CA_NTYPE] = {
11244
11244
  ca_monop_not_implement,
11245
11245
  ca_monop_not_implement,
11246
11246
  ca_monop_not_implement,
@@ -11250,33 +11250,34 @@ ca_monop_cos[CA_NTYPE] = {
11250
11250
  ca_monop_not_implement,
11251
11251
  ca_monop_not_implement,
11252
11252
  ca_monop_not_implement,
11253
- ca_monop_cos_float32_t,
11254
- ca_monop_cos_float64_t,
11255
11253
  ca_monop_not_implement,
11256
- ca_monop_cos_cmplx64_t,
11257
- ca_monop_cos_cmplx128_t,
11254
+ ca_monop_tan_float32_t,
11255
+ ca_monop_tan_float64_t,
11258
11256
  ca_monop_not_implement,
11259
- ca_monop_cos_VALUE,
11257
+ ca_monop_tan_cmplx64_t,
11258
+ ca_monop_tan_cmplx128_t,
11259
+ ca_monop_not_implement,
11260
+ ca_monop_tan_VALUE,
11260
11261
  };
11261
11262
 
11262
- VALUE rb_ca_cos (VALUE self)
11263
+ VALUE rb_ca_tan (VALUE self)
11263
11264
  {
11264
11265
  if ( rb_ca_is_integer_type(self) ) {
11265
11266
  self = rb_ca_wrap_readonly(self, INT2NUM(CA_FLOAT64));
11266
11267
  }
11267
- return rb_ca_call_monop(self, ca_monop_cos);
11268
+ return rb_ca_call_monop(self, ca_monop_tan);
11268
11269
  }
11269
11270
 
11270
- VALUE rb_ca_cos_bang (VALUE self)
11271
- { return rb_ca_call_monop_bang(self, ca_monop_cos); }
11271
+ VALUE rb_ca_tan_bang (VALUE self)
11272
+ { return rb_ca_call_monop_bang(self, ca_monop_tan); }
11272
11273
 
11273
- VALUE rb_cmath_cos (VALUE mod, VALUE arg)
11274
- { return ca_math_call(mod, arg, rb_intern("cos")); }
11274
+ VALUE rb_cmath_tan (VALUE mod, VALUE arg)
11275
+ { return ca_math_call(mod, arg, rb_intern("tan")); }
11275
11276
 
11276
- /* ===== monop tan ============================================ */
11277
+ /* ===== monop asin ============================================ */
11277
11278
 
11278
11279
  static void
11279
- ca_monop_tan_float32_t (ca_size_t n, boolean8_t *m,
11280
+ ca_monop_asin_float32_t (ca_size_t n, boolean8_t *m,
11280
11281
  char * __restrict__ ptr1, ca_size_t i1,
11281
11282
  char * __restrict__ ptr2, ca_size_t i2)
11282
11283
  {
@@ -11292,7 +11293,7 @@ ca_monop_tan_float32_t (ca_size_t n, boolean8_t *m,
11292
11293
  if ( ! *pm ) {
11293
11294
  p1 = q1 + k*i1;
11294
11295
  p2 = q2 + k*i2;
11295
- { (*p2) = tan(*p1); }
11296
+ { (*p2) = asinf(*p1); }
11296
11297
  }
11297
11298
  }
11298
11299
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -11307,21 +11308,21 @@ ca_monop_tan_float32_t (ca_size_t n, boolean8_t *m,
11307
11308
  #pragma omp simd
11308
11309
  for (k=0; k<n; k++) {
11309
11310
  p1 = q1 + k; p2 = q2 + k;
11310
- { (*p2) = tan(*p1); }
11311
+ { (*p2) = asinf(*p1); }
11311
11312
  }
11312
11313
  } else {
11313
11314
  /* strided branch: numo-shape `p += s` increment form. */
11314
11315
  float *p1 = q1;
11315
11316
  float *p2 = q2;
11316
11317
  for (k=0; k<n; k++) {
11317
- { (*p2) = tan(*p1); }
11318
+ { (*p2) = asinf(*p1); }
11318
11319
  p1 += i1; p2 += i2;
11319
11320
  }
11320
11321
  }
11321
11322
  }
11322
11323
 
11323
11324
  static void
11324
- ca_monop_tan_float64_t (ca_size_t n, boolean8_t *m,
11325
+ ca_monop_asin_float64_t (ca_size_t n, boolean8_t *m,
11325
11326
  char * __restrict__ ptr1, ca_size_t i1,
11326
11327
  char * __restrict__ ptr2, ca_size_t i2)
11327
11328
  {
@@ -11337,7 +11338,7 @@ ca_monop_tan_float64_t (ca_size_t n, boolean8_t *m,
11337
11338
  if ( ! *pm ) {
11338
11339
  p1 = q1 + k*i1;
11339
11340
  p2 = q2 + k*i2;
11340
- { (*p2) = tan(*p1); }
11341
+ { (*p2) = asin(*p1); }
11341
11342
  }
11342
11343
  }
11343
11344
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -11352,21 +11353,21 @@ ca_monop_tan_float64_t (ca_size_t n, boolean8_t *m,
11352
11353
  #pragma omp simd
11353
11354
  for (k=0; k<n; k++) {
11354
11355
  p1 = q1 + k; p2 = q2 + k;
11355
- { (*p2) = tan(*p1); }
11356
+ { (*p2) = asin(*p1); }
11356
11357
  }
11357
11358
  } else {
11358
11359
  /* strided branch: numo-shape `p += s` increment form. */
11359
11360
  double *p1 = q1;
11360
11361
  double *p2 = q2;
11361
11362
  for (k=0; k<n; k++) {
11362
- { (*p2) = tan(*p1); }
11363
+ { (*p2) = asin(*p1); }
11363
11364
  p1 += i1; p2 += i2;
11364
11365
  }
11365
11366
  }
11366
11367
  }
11367
11368
 
11368
11369
  static void
11369
- ca_monop_tan_cmplx64_t (ca_size_t n, boolean8_t *m,
11370
+ ca_monop_asin_cmplx64_t (ca_size_t n, boolean8_t *m,
11370
11371
  char * __restrict__ ptr1, ca_size_t i1,
11371
11372
  char * __restrict__ ptr2, ca_size_t i2)
11372
11373
  {
@@ -11382,7 +11383,7 @@ ca_monop_tan_cmplx64_t (ca_size_t n, boolean8_t *m,
11382
11383
  if ( ! *pm ) {
11383
11384
  p1 = q1 + k*i1;
11384
11385
  p2 = q2 + k*i2;
11385
- { (*p2) = ctan(*p1); }
11386
+ { (*p2) = casinf(*p1); }
11386
11387
  }
11387
11388
  }
11388
11389
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -11397,21 +11398,21 @@ ca_monop_tan_cmplx64_t (ca_size_t n, boolean8_t *m,
11397
11398
  #pragma omp simd
11398
11399
  for (k=0; k<n; k++) {
11399
11400
  p1 = q1 + k; p2 = q2 + k;
11400
- { (*p2) = ctan(*p1); }
11401
+ { (*p2) = casinf(*p1); }
11401
11402
  }
11402
11403
  } else {
11403
11404
  /* strided branch: numo-shape `p += s` increment form. */
11404
11405
  cmplx64_t *p1 = q1;
11405
11406
  cmplx64_t *p2 = q2;
11406
11407
  for (k=0; k<n; k++) {
11407
- { (*p2) = ctan(*p1); }
11408
+ { (*p2) = casinf(*p1); }
11408
11409
  p1 += i1; p2 += i2;
11409
11410
  }
11410
11411
  }
11411
11412
  }
11412
11413
 
11413
11414
  static void
11414
- ca_monop_tan_cmplx128_t (ca_size_t n, boolean8_t *m,
11415
+ ca_monop_asin_cmplx128_t (ca_size_t n, boolean8_t *m,
11415
11416
  char * __restrict__ ptr1, ca_size_t i1,
11416
11417
  char * __restrict__ ptr2, ca_size_t i2)
11417
11418
  {
@@ -11427,7 +11428,7 @@ ca_monop_tan_cmplx128_t (ca_size_t n, boolean8_t *m,
11427
11428
  if ( ! *pm ) {
11428
11429
  p1 = q1 + k*i1;
11429
11430
  p2 = q2 + k*i2;
11430
- { (*p2) = ctan(*p1); }
11431
+ { (*p2) = casin(*p1); }
11431
11432
  }
11432
11433
  }
11433
11434
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -11442,21 +11443,21 @@ ca_monop_tan_cmplx128_t (ca_size_t n, boolean8_t *m,
11442
11443
  #pragma omp simd
11443
11444
  for (k=0; k<n; k++) {
11444
11445
  p1 = q1 + k; p2 = q2 + k;
11445
- { (*p2) = ctan(*p1); }
11446
+ { (*p2) = casin(*p1); }
11446
11447
  }
11447
11448
  } else {
11448
11449
  /* strided branch: numo-shape `p += s` increment form. */
11449
11450
  cmplx128_t *p1 = q1;
11450
11451
  cmplx128_t *p2 = q2;
11451
11452
  for (k=0; k<n; k++) {
11452
- { (*p2) = ctan(*p1); }
11453
+ { (*p2) = casin(*p1); }
11453
11454
  p1 += i1; p2 += i2;
11454
11455
  }
11455
11456
  }
11456
11457
  }
11457
11458
 
11458
11459
  static void
11459
- ca_monop_tan_VALUE (ca_size_t n, boolean8_t *m,
11460
+ ca_monop_asin_VALUE (ca_size_t n, boolean8_t *m,
11460
11461
  char * __restrict__ ptr1, ca_size_t i1,
11461
11462
  char * __restrict__ ptr2, ca_size_t i2)
11462
11463
  {
@@ -11475,9 +11476,9 @@ ca_monop_tan_VALUE (ca_size_t n, boolean8_t *m,
11475
11476
  { {
11476
11477
  VALUE _obj_arg = (*p1);
11477
11478
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
11478
- (*p2) = DBL2NUM(tan(NUM2DBL(_obj_arg)));
11479
+ (*p2) = DBL2NUM(asin(NUM2DBL(_obj_arg)));
11479
11480
  } else {
11480
- (*p2) = rb_funcall(_obj_arg, rb_intern("tan"), 0);
11481
+ (*p2) = rb_funcall(_obj_arg, rb_intern("asin"), 0);
11481
11482
  }
11482
11483
  }
11483
11484
  }
@@ -11498,9 +11499,9 @@ ca_monop_tan_VALUE (ca_size_t n, boolean8_t *m,
11498
11499
  { {
11499
11500
  VALUE _obj_arg = (*p1);
11500
11501
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
11501
- (*p2) = DBL2NUM(tan(NUM2DBL(_obj_arg)));
11502
+ (*p2) = DBL2NUM(asin(NUM2DBL(_obj_arg)));
11502
11503
  } else {
11503
- (*p2) = rb_funcall(_obj_arg, rb_intern("tan"), 0);
11504
+ (*p2) = rb_funcall(_obj_arg, rb_intern("asin"), 0);
11504
11505
  }
11505
11506
  }
11506
11507
  }
@@ -11513,9 +11514,9 @@ ca_monop_tan_VALUE (ca_size_t n, boolean8_t *m,
11513
11514
  { {
11514
11515
  VALUE _obj_arg = (*p1);
11515
11516
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
11516
- (*p2) = DBL2NUM(tan(NUM2DBL(_obj_arg)));
11517
+ (*p2) = DBL2NUM(asin(NUM2DBL(_obj_arg)));
11517
11518
  } else {
11518
- (*p2) = rb_funcall(_obj_arg, rb_intern("tan"), 0);
11519
+ (*p2) = rb_funcall(_obj_arg, rb_intern("asin"), 0);
11519
11520
  }
11520
11521
  }
11521
11522
  }
@@ -11525,7 +11526,7 @@ ca_monop_tan_VALUE (ca_size_t n, boolean8_t *m,
11525
11526
  }
11526
11527
 
11527
11528
  ca_monop_func_t
11528
- ca_monop_tan[CA_NTYPE] = {
11529
+ ca_monop_asin[CA_NTYPE] = {
11529
11530
  ca_monop_not_implement,
11530
11531
  ca_monop_not_implement,
11531
11532
  ca_monop_not_implement,
@@ -11536,33 +11537,33 @@ ca_monop_tan[CA_NTYPE] = {
11536
11537
  ca_monop_not_implement,
11537
11538
  ca_monop_not_implement,
11538
11539
  ca_monop_not_implement,
11539
- ca_monop_tan_float32_t,
11540
- ca_monop_tan_float64_t,
11540
+ ca_monop_asin_float32_t,
11541
+ ca_monop_asin_float64_t,
11541
11542
  ca_monop_not_implement,
11542
- ca_monop_tan_cmplx64_t,
11543
- ca_monop_tan_cmplx128_t,
11543
+ ca_monop_asin_cmplx64_t,
11544
+ ca_monop_asin_cmplx128_t,
11544
11545
  ca_monop_not_implement,
11545
- ca_monop_tan_VALUE,
11546
+ ca_monop_asin_VALUE,
11546
11547
  };
11547
11548
 
11548
- VALUE rb_ca_tan (VALUE self)
11549
+ VALUE rb_ca_asin (VALUE self)
11549
11550
  {
11550
11551
  if ( rb_ca_is_integer_type(self) ) {
11551
11552
  self = rb_ca_wrap_readonly(self, INT2NUM(CA_FLOAT64));
11552
11553
  }
11553
- return rb_ca_call_monop(self, ca_monop_tan);
11554
+ return rb_ca_call_monop(self, ca_monop_asin);
11554
11555
  }
11555
11556
 
11556
- VALUE rb_ca_tan_bang (VALUE self)
11557
- { return rb_ca_call_monop_bang(self, ca_monop_tan); }
11557
+ VALUE rb_ca_asin_bang (VALUE self)
11558
+ { return rb_ca_call_monop_bang(self, ca_monop_asin); }
11558
11559
 
11559
- VALUE rb_cmath_tan (VALUE mod, VALUE arg)
11560
- { return ca_math_call(mod, arg, rb_intern("tan")); }
11560
+ VALUE rb_cmath_asin (VALUE mod, VALUE arg)
11561
+ { return ca_math_call(mod, arg, rb_intern("asin")); }
11561
11562
 
11562
- /* ===== monop asin ============================================ */
11563
+ /* ===== monop acos ============================================ */
11563
11564
 
11564
11565
  static void
11565
- ca_monop_asin_float32_t (ca_size_t n, boolean8_t *m,
11566
+ ca_monop_acos_float32_t (ca_size_t n, boolean8_t *m,
11566
11567
  char * __restrict__ ptr1, ca_size_t i1,
11567
11568
  char * __restrict__ ptr2, ca_size_t i2)
11568
11569
  {
@@ -11578,7 +11579,7 @@ ca_monop_asin_float32_t (ca_size_t n, boolean8_t *m,
11578
11579
  if ( ! *pm ) {
11579
11580
  p1 = q1 + k*i1;
11580
11581
  p2 = q2 + k*i2;
11581
- { (*p2) = asin(*p1); }
11582
+ { (*p2) = acosf(*p1); }
11582
11583
  }
11583
11584
  }
11584
11585
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -11593,21 +11594,21 @@ ca_monop_asin_float32_t (ca_size_t n, boolean8_t *m,
11593
11594
  #pragma omp simd
11594
11595
  for (k=0; k<n; k++) {
11595
11596
  p1 = q1 + k; p2 = q2 + k;
11596
- { (*p2) = asin(*p1); }
11597
+ { (*p2) = acosf(*p1); }
11597
11598
  }
11598
11599
  } else {
11599
11600
  /* strided branch: numo-shape `p += s` increment form. */
11600
11601
  float *p1 = q1;
11601
11602
  float *p2 = q2;
11602
11603
  for (k=0; k<n; k++) {
11603
- { (*p2) = asin(*p1); }
11604
+ { (*p2) = acosf(*p1); }
11604
11605
  p1 += i1; p2 += i2;
11605
11606
  }
11606
11607
  }
11607
11608
  }
11608
11609
 
11609
11610
  static void
11610
- ca_monop_asin_float64_t (ca_size_t n, boolean8_t *m,
11611
+ ca_monop_acos_float64_t (ca_size_t n, boolean8_t *m,
11611
11612
  char * __restrict__ ptr1, ca_size_t i1,
11612
11613
  char * __restrict__ ptr2, ca_size_t i2)
11613
11614
  {
@@ -11623,7 +11624,7 @@ ca_monop_asin_float64_t (ca_size_t n, boolean8_t *m,
11623
11624
  if ( ! *pm ) {
11624
11625
  p1 = q1 + k*i1;
11625
11626
  p2 = q2 + k*i2;
11626
- { (*p2) = asin(*p1); }
11627
+ { (*p2) = acos(*p1); }
11627
11628
  }
11628
11629
  }
11629
11630
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -11638,21 +11639,21 @@ ca_monop_asin_float64_t (ca_size_t n, boolean8_t *m,
11638
11639
  #pragma omp simd
11639
11640
  for (k=0; k<n; k++) {
11640
11641
  p1 = q1 + k; p2 = q2 + k;
11641
- { (*p2) = asin(*p1); }
11642
+ { (*p2) = acos(*p1); }
11642
11643
  }
11643
11644
  } else {
11644
11645
  /* strided branch: numo-shape `p += s` increment form. */
11645
11646
  double *p1 = q1;
11646
11647
  double *p2 = q2;
11647
11648
  for (k=0; k<n; k++) {
11648
- { (*p2) = asin(*p1); }
11649
+ { (*p2) = acos(*p1); }
11649
11650
  p1 += i1; p2 += i2;
11650
11651
  }
11651
11652
  }
11652
11653
  }
11653
11654
 
11654
11655
  static void
11655
- ca_monop_asin_cmplx64_t (ca_size_t n, boolean8_t *m,
11656
+ ca_monop_acos_cmplx64_t (ca_size_t n, boolean8_t *m,
11656
11657
  char * __restrict__ ptr1, ca_size_t i1,
11657
11658
  char * __restrict__ ptr2, ca_size_t i2)
11658
11659
  {
@@ -11668,7 +11669,7 @@ ca_monop_asin_cmplx64_t (ca_size_t n, boolean8_t *m,
11668
11669
  if ( ! *pm ) {
11669
11670
  p1 = q1 + k*i1;
11670
11671
  p2 = q2 + k*i2;
11671
- { (*p2) = casin(*p1); }
11672
+ { (*p2) = cacosf(*p1); }
11672
11673
  }
11673
11674
  }
11674
11675
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -11683,21 +11684,21 @@ ca_monop_asin_cmplx64_t (ca_size_t n, boolean8_t *m,
11683
11684
  #pragma omp simd
11684
11685
  for (k=0; k<n; k++) {
11685
11686
  p1 = q1 + k; p2 = q2 + k;
11686
- { (*p2) = casin(*p1); }
11687
+ { (*p2) = cacosf(*p1); }
11687
11688
  }
11688
11689
  } else {
11689
11690
  /* strided branch: numo-shape `p += s` increment form. */
11690
11691
  cmplx64_t *p1 = q1;
11691
11692
  cmplx64_t *p2 = q2;
11692
11693
  for (k=0; k<n; k++) {
11693
- { (*p2) = casin(*p1); }
11694
+ { (*p2) = cacosf(*p1); }
11694
11695
  p1 += i1; p2 += i2;
11695
11696
  }
11696
11697
  }
11697
11698
  }
11698
11699
 
11699
11700
  static void
11700
- ca_monop_asin_cmplx128_t (ca_size_t n, boolean8_t *m,
11701
+ ca_monop_acos_cmplx128_t (ca_size_t n, boolean8_t *m,
11701
11702
  char * __restrict__ ptr1, ca_size_t i1,
11702
11703
  char * __restrict__ ptr2, ca_size_t i2)
11703
11704
  {
@@ -11713,7 +11714,7 @@ ca_monop_asin_cmplx128_t (ca_size_t n, boolean8_t *m,
11713
11714
  if ( ! *pm ) {
11714
11715
  p1 = q1 + k*i1;
11715
11716
  p2 = q2 + k*i2;
11716
- { (*p2) = casin(*p1); }
11717
+ { (*p2) = cacos(*p1); }
11717
11718
  }
11718
11719
  }
11719
11720
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -11728,21 +11729,21 @@ ca_monop_asin_cmplx128_t (ca_size_t n, boolean8_t *m,
11728
11729
  #pragma omp simd
11729
11730
  for (k=0; k<n; k++) {
11730
11731
  p1 = q1 + k; p2 = q2 + k;
11731
- { (*p2) = casin(*p1); }
11732
+ { (*p2) = cacos(*p1); }
11732
11733
  }
11733
11734
  } else {
11734
11735
  /* strided branch: numo-shape `p += s` increment form. */
11735
11736
  cmplx128_t *p1 = q1;
11736
11737
  cmplx128_t *p2 = q2;
11737
11738
  for (k=0; k<n; k++) {
11738
- { (*p2) = casin(*p1); }
11739
+ { (*p2) = cacos(*p1); }
11739
11740
  p1 += i1; p2 += i2;
11740
11741
  }
11741
11742
  }
11742
11743
  }
11743
11744
 
11744
11745
  static void
11745
- ca_monop_asin_VALUE (ca_size_t n, boolean8_t *m,
11746
+ ca_monop_acos_VALUE (ca_size_t n, boolean8_t *m,
11746
11747
  char * __restrict__ ptr1, ca_size_t i1,
11747
11748
  char * __restrict__ ptr2, ca_size_t i2)
11748
11749
  {
@@ -11761,9 +11762,9 @@ ca_monop_asin_VALUE (ca_size_t n, boolean8_t *m,
11761
11762
  { {
11762
11763
  VALUE _obj_arg = (*p1);
11763
11764
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
11764
- (*p2) = DBL2NUM(asin(NUM2DBL(_obj_arg)));
11765
+ (*p2) = DBL2NUM(acos(NUM2DBL(_obj_arg)));
11765
11766
  } else {
11766
- (*p2) = rb_funcall(_obj_arg, rb_intern("asin"), 0);
11767
+ (*p2) = rb_funcall(_obj_arg, rb_intern("acos"), 0);
11767
11768
  }
11768
11769
  }
11769
11770
  }
@@ -11784,9 +11785,9 @@ ca_monop_asin_VALUE (ca_size_t n, boolean8_t *m,
11784
11785
  { {
11785
11786
  VALUE _obj_arg = (*p1);
11786
11787
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
11787
- (*p2) = DBL2NUM(asin(NUM2DBL(_obj_arg)));
11788
+ (*p2) = DBL2NUM(acos(NUM2DBL(_obj_arg)));
11788
11789
  } else {
11789
- (*p2) = rb_funcall(_obj_arg, rb_intern("asin"), 0);
11790
+ (*p2) = rb_funcall(_obj_arg, rb_intern("acos"), 0);
11790
11791
  }
11791
11792
  }
11792
11793
  }
@@ -11799,9 +11800,9 @@ ca_monop_asin_VALUE (ca_size_t n, boolean8_t *m,
11799
11800
  { {
11800
11801
  VALUE _obj_arg = (*p1);
11801
11802
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
11802
- (*p2) = DBL2NUM(asin(NUM2DBL(_obj_arg)));
11803
+ (*p2) = DBL2NUM(acos(NUM2DBL(_obj_arg)));
11803
11804
  } else {
11804
- (*p2) = rb_funcall(_obj_arg, rb_intern("asin"), 0);
11805
+ (*p2) = rb_funcall(_obj_arg, rb_intern("acos"), 0);
11805
11806
  }
11806
11807
  }
11807
11808
  }
@@ -11811,7 +11812,7 @@ ca_monop_asin_VALUE (ca_size_t n, boolean8_t *m,
11811
11812
  }
11812
11813
 
11813
11814
  ca_monop_func_t
11814
- ca_monop_asin[CA_NTYPE] = {
11815
+ ca_monop_acos[CA_NTYPE] = {
11815
11816
  ca_monop_not_implement,
11816
11817
  ca_monop_not_implement,
11817
11818
  ca_monop_not_implement,
@@ -11822,33 +11823,33 @@ ca_monop_asin[CA_NTYPE] = {
11822
11823
  ca_monop_not_implement,
11823
11824
  ca_monop_not_implement,
11824
11825
  ca_monop_not_implement,
11825
- ca_monop_asin_float32_t,
11826
- ca_monop_asin_float64_t,
11826
+ ca_monop_acos_float32_t,
11827
+ ca_monop_acos_float64_t,
11827
11828
  ca_monop_not_implement,
11828
- ca_monop_asin_cmplx64_t,
11829
- ca_monop_asin_cmplx128_t,
11829
+ ca_monop_acos_cmplx64_t,
11830
+ ca_monop_acos_cmplx128_t,
11830
11831
  ca_monop_not_implement,
11831
- ca_monop_asin_VALUE,
11832
+ ca_monop_acos_VALUE,
11832
11833
  };
11833
11834
 
11834
- VALUE rb_ca_asin (VALUE self)
11835
+ VALUE rb_ca_acos (VALUE self)
11835
11836
  {
11836
11837
  if ( rb_ca_is_integer_type(self) ) {
11837
11838
  self = rb_ca_wrap_readonly(self, INT2NUM(CA_FLOAT64));
11838
11839
  }
11839
- return rb_ca_call_monop(self, ca_monop_asin);
11840
+ return rb_ca_call_monop(self, ca_monop_acos);
11840
11841
  }
11841
11842
 
11842
- VALUE rb_ca_asin_bang (VALUE self)
11843
- { return rb_ca_call_monop_bang(self, ca_monop_asin); }
11843
+ VALUE rb_ca_acos_bang (VALUE self)
11844
+ { return rb_ca_call_monop_bang(self, ca_monop_acos); }
11844
11845
 
11845
- VALUE rb_cmath_asin (VALUE mod, VALUE arg)
11846
- { return ca_math_call(mod, arg, rb_intern("asin")); }
11846
+ VALUE rb_cmath_acos (VALUE mod, VALUE arg)
11847
+ { return ca_math_call(mod, arg, rb_intern("acos")); }
11847
11848
 
11848
- /* ===== monop acos ============================================ */
11849
+ /* ===== monop atan ============================================ */
11849
11850
 
11850
11851
  static void
11851
- ca_monop_acos_float32_t (ca_size_t n, boolean8_t *m,
11852
+ ca_monop_atan_float32_t (ca_size_t n, boolean8_t *m,
11852
11853
  char * __restrict__ ptr1, ca_size_t i1,
11853
11854
  char * __restrict__ ptr2, ca_size_t i2)
11854
11855
  {
@@ -11864,7 +11865,7 @@ ca_monop_acos_float32_t (ca_size_t n, boolean8_t *m,
11864
11865
  if ( ! *pm ) {
11865
11866
  p1 = q1 + k*i1;
11866
11867
  p2 = q2 + k*i2;
11867
- { (*p2) = acos(*p1); }
11868
+ { (*p2) = atanf(*p1); }
11868
11869
  }
11869
11870
  }
11870
11871
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -11879,21 +11880,21 @@ ca_monop_acos_float32_t (ca_size_t n, boolean8_t *m,
11879
11880
  #pragma omp simd
11880
11881
  for (k=0; k<n; k++) {
11881
11882
  p1 = q1 + k; p2 = q2 + k;
11882
- { (*p2) = acos(*p1); }
11883
+ { (*p2) = atanf(*p1); }
11883
11884
  }
11884
11885
  } else {
11885
11886
  /* strided branch: numo-shape `p += s` increment form. */
11886
11887
  float *p1 = q1;
11887
11888
  float *p2 = q2;
11888
11889
  for (k=0; k<n; k++) {
11889
- { (*p2) = acos(*p1); }
11890
+ { (*p2) = atanf(*p1); }
11890
11891
  p1 += i1; p2 += i2;
11891
11892
  }
11892
11893
  }
11893
11894
  }
11894
11895
 
11895
11896
  static void
11896
- ca_monop_acos_float64_t (ca_size_t n, boolean8_t *m,
11897
+ ca_monop_atan_float64_t (ca_size_t n, boolean8_t *m,
11897
11898
  char * __restrict__ ptr1, ca_size_t i1,
11898
11899
  char * __restrict__ ptr2, ca_size_t i2)
11899
11900
  {
@@ -11909,7 +11910,7 @@ ca_monop_acos_float64_t (ca_size_t n, boolean8_t *m,
11909
11910
  if ( ! *pm ) {
11910
11911
  p1 = q1 + k*i1;
11911
11912
  p2 = q2 + k*i2;
11912
- { (*p2) = acos(*p1); }
11913
+ { (*p2) = atan(*p1); }
11913
11914
  }
11914
11915
  }
11915
11916
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -11924,21 +11925,21 @@ ca_monop_acos_float64_t (ca_size_t n, boolean8_t *m,
11924
11925
  #pragma omp simd
11925
11926
  for (k=0; k<n; k++) {
11926
11927
  p1 = q1 + k; p2 = q2 + k;
11927
- { (*p2) = acos(*p1); }
11928
+ { (*p2) = atan(*p1); }
11928
11929
  }
11929
11930
  } else {
11930
11931
  /* strided branch: numo-shape `p += s` increment form. */
11931
11932
  double *p1 = q1;
11932
11933
  double *p2 = q2;
11933
11934
  for (k=0; k<n; k++) {
11934
- { (*p2) = acos(*p1); }
11935
+ { (*p2) = atan(*p1); }
11935
11936
  p1 += i1; p2 += i2;
11936
11937
  }
11937
11938
  }
11938
11939
  }
11939
11940
 
11940
11941
  static void
11941
- ca_monop_acos_cmplx64_t (ca_size_t n, boolean8_t *m,
11942
+ ca_monop_atan_cmplx64_t (ca_size_t n, boolean8_t *m,
11942
11943
  char * __restrict__ ptr1, ca_size_t i1,
11943
11944
  char * __restrict__ ptr2, ca_size_t i2)
11944
11945
  {
@@ -11954,7 +11955,7 @@ ca_monop_acos_cmplx64_t (ca_size_t n, boolean8_t *m,
11954
11955
  if ( ! *pm ) {
11955
11956
  p1 = q1 + k*i1;
11956
11957
  p2 = q2 + k*i2;
11957
- { (*p2) = cacos(*p1); }
11958
+ { (*p2) = catanf(*p1); }
11958
11959
  }
11959
11960
  }
11960
11961
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -11969,21 +11970,21 @@ ca_monop_acos_cmplx64_t (ca_size_t n, boolean8_t *m,
11969
11970
  #pragma omp simd
11970
11971
  for (k=0; k<n; k++) {
11971
11972
  p1 = q1 + k; p2 = q2 + k;
11972
- { (*p2) = cacos(*p1); }
11973
+ { (*p2) = catanf(*p1); }
11973
11974
  }
11974
11975
  } else {
11975
11976
  /* strided branch: numo-shape `p += s` increment form. */
11976
11977
  cmplx64_t *p1 = q1;
11977
11978
  cmplx64_t *p2 = q2;
11978
11979
  for (k=0; k<n; k++) {
11979
- { (*p2) = cacos(*p1); }
11980
+ { (*p2) = catanf(*p1); }
11980
11981
  p1 += i1; p2 += i2;
11981
11982
  }
11982
11983
  }
11983
11984
  }
11984
11985
 
11985
11986
  static void
11986
- ca_monop_acos_cmplx128_t (ca_size_t n, boolean8_t *m,
11987
+ ca_monop_atan_cmplx128_t (ca_size_t n, boolean8_t *m,
11987
11988
  char * __restrict__ ptr1, ca_size_t i1,
11988
11989
  char * __restrict__ ptr2, ca_size_t i2)
11989
11990
  {
@@ -11999,7 +12000,7 @@ ca_monop_acos_cmplx128_t (ca_size_t n, boolean8_t *m,
11999
12000
  if ( ! *pm ) {
12000
12001
  p1 = q1 + k*i1;
12001
12002
  p2 = q2 + k*i2;
12002
- { (*p2) = cacos(*p1); }
12003
+ { (*p2) = catan(*p1); }
12003
12004
  }
12004
12005
  }
12005
12006
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -12014,21 +12015,21 @@ ca_monop_acos_cmplx128_t (ca_size_t n, boolean8_t *m,
12014
12015
  #pragma omp simd
12015
12016
  for (k=0; k<n; k++) {
12016
12017
  p1 = q1 + k; p2 = q2 + k;
12017
- { (*p2) = cacos(*p1); }
12018
+ { (*p2) = catan(*p1); }
12018
12019
  }
12019
12020
  } else {
12020
12021
  /* strided branch: numo-shape `p += s` increment form. */
12021
12022
  cmplx128_t *p1 = q1;
12022
12023
  cmplx128_t *p2 = q2;
12023
12024
  for (k=0; k<n; k++) {
12024
- { (*p2) = cacos(*p1); }
12025
+ { (*p2) = catan(*p1); }
12025
12026
  p1 += i1; p2 += i2;
12026
12027
  }
12027
12028
  }
12028
12029
  }
12029
12030
 
12030
12031
  static void
12031
- ca_monop_acos_VALUE (ca_size_t n, boolean8_t *m,
12032
+ ca_monop_atan_VALUE (ca_size_t n, boolean8_t *m,
12032
12033
  char * __restrict__ ptr1, ca_size_t i1,
12033
12034
  char * __restrict__ ptr2, ca_size_t i2)
12034
12035
  {
@@ -12047,9 +12048,9 @@ ca_monop_acos_VALUE (ca_size_t n, boolean8_t *m,
12047
12048
  { {
12048
12049
  VALUE _obj_arg = (*p1);
12049
12050
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
12050
- (*p2) = DBL2NUM(acos(NUM2DBL(_obj_arg)));
12051
+ (*p2) = DBL2NUM(atan(NUM2DBL(_obj_arg)));
12051
12052
  } else {
12052
- (*p2) = rb_funcall(_obj_arg, rb_intern("acos"), 0);
12053
+ (*p2) = rb_funcall(_obj_arg, rb_intern("atan"), 0);
12053
12054
  }
12054
12055
  }
12055
12056
  }
@@ -12070,9 +12071,9 @@ ca_monop_acos_VALUE (ca_size_t n, boolean8_t *m,
12070
12071
  { {
12071
12072
  VALUE _obj_arg = (*p1);
12072
12073
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
12073
- (*p2) = DBL2NUM(acos(NUM2DBL(_obj_arg)));
12074
+ (*p2) = DBL2NUM(atan(NUM2DBL(_obj_arg)));
12074
12075
  } else {
12075
- (*p2) = rb_funcall(_obj_arg, rb_intern("acos"), 0);
12076
+ (*p2) = rb_funcall(_obj_arg, rb_intern("atan"), 0);
12076
12077
  }
12077
12078
  }
12078
12079
  }
@@ -12085,9 +12086,9 @@ ca_monop_acos_VALUE (ca_size_t n, boolean8_t *m,
12085
12086
  { {
12086
12087
  VALUE _obj_arg = (*p1);
12087
12088
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
12088
- (*p2) = DBL2NUM(acos(NUM2DBL(_obj_arg)));
12089
+ (*p2) = DBL2NUM(atan(NUM2DBL(_obj_arg)));
12089
12090
  } else {
12090
- (*p2) = rb_funcall(_obj_arg, rb_intern("acos"), 0);
12091
+ (*p2) = rb_funcall(_obj_arg, rb_intern("atan"), 0);
12091
12092
  }
12092
12093
  }
12093
12094
  }
@@ -12097,7 +12098,7 @@ ca_monop_acos_VALUE (ca_size_t n, boolean8_t *m,
12097
12098
  }
12098
12099
 
12099
12100
  ca_monop_func_t
12100
- ca_monop_acos[CA_NTYPE] = {
12101
+ ca_monop_atan[CA_NTYPE] = {
12101
12102
  ca_monop_not_implement,
12102
12103
  ca_monop_not_implement,
12103
12104
  ca_monop_not_implement,
@@ -12108,33 +12109,33 @@ ca_monop_acos[CA_NTYPE] = {
12108
12109
  ca_monop_not_implement,
12109
12110
  ca_monop_not_implement,
12110
12111
  ca_monop_not_implement,
12111
- ca_monop_acos_float32_t,
12112
- ca_monop_acos_float64_t,
12112
+ ca_monop_atan_float32_t,
12113
+ ca_monop_atan_float64_t,
12113
12114
  ca_monop_not_implement,
12114
- ca_monop_acos_cmplx64_t,
12115
- ca_monop_acos_cmplx128_t,
12115
+ ca_monop_atan_cmplx64_t,
12116
+ ca_monop_atan_cmplx128_t,
12116
12117
  ca_monop_not_implement,
12117
- ca_monop_acos_VALUE,
12118
+ ca_monop_atan_VALUE,
12118
12119
  };
12119
12120
 
12120
- VALUE rb_ca_acos (VALUE self)
12121
+ VALUE rb_ca_atan (VALUE self)
12121
12122
  {
12122
12123
  if ( rb_ca_is_integer_type(self) ) {
12123
12124
  self = rb_ca_wrap_readonly(self, INT2NUM(CA_FLOAT64));
12124
12125
  }
12125
- return rb_ca_call_monop(self, ca_monop_acos);
12126
+ return rb_ca_call_monop(self, ca_monop_atan);
12126
12127
  }
12127
12128
 
12128
- VALUE rb_ca_acos_bang (VALUE self)
12129
- { return rb_ca_call_monop_bang(self, ca_monop_acos); }
12129
+ VALUE rb_ca_atan_bang (VALUE self)
12130
+ { return rb_ca_call_monop_bang(self, ca_monop_atan); }
12130
12131
 
12131
- VALUE rb_cmath_acos (VALUE mod, VALUE arg)
12132
- { return ca_math_call(mod, arg, rb_intern("acos")); }
12132
+ VALUE rb_cmath_atan (VALUE mod, VALUE arg)
12133
+ { return ca_math_call(mod, arg, rb_intern("atan")); }
12133
12134
 
12134
- /* ===== monop atan ============================================ */
12135
+ /* ===== monop log ============================================ */
12135
12136
 
12136
12137
  static void
12137
- ca_monop_atan_float32_t (ca_size_t n, boolean8_t *m,
12138
+ ca_monop_log_float32_t (ca_size_t n, boolean8_t *m,
12138
12139
  char * __restrict__ ptr1, ca_size_t i1,
12139
12140
  char * __restrict__ ptr2, ca_size_t i2)
12140
12141
  {
@@ -12150,7 +12151,7 @@ ca_monop_atan_float32_t (ca_size_t n, boolean8_t *m,
12150
12151
  if ( ! *pm ) {
12151
12152
  p1 = q1 + k*i1;
12152
12153
  p2 = q2 + k*i2;
12153
- { (*p2) = atan(*p1); }
12154
+ { (*p2) = logf(*p1); }
12154
12155
  }
12155
12156
  }
12156
12157
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -12165,21 +12166,21 @@ ca_monop_atan_float32_t (ca_size_t n, boolean8_t *m,
12165
12166
  #pragma omp simd
12166
12167
  for (k=0; k<n; k++) {
12167
12168
  p1 = q1 + k; p2 = q2 + k;
12168
- { (*p2) = atan(*p1); }
12169
+ { (*p2) = logf(*p1); }
12169
12170
  }
12170
12171
  } else {
12171
12172
  /* strided branch: numo-shape `p += s` increment form. */
12172
12173
  float *p1 = q1;
12173
12174
  float *p2 = q2;
12174
12175
  for (k=0; k<n; k++) {
12175
- { (*p2) = atan(*p1); }
12176
+ { (*p2) = logf(*p1); }
12176
12177
  p1 += i1; p2 += i2;
12177
12178
  }
12178
12179
  }
12179
12180
  }
12180
12181
 
12181
12182
  static void
12182
- ca_monop_atan_float64_t (ca_size_t n, boolean8_t *m,
12183
+ ca_monop_log_float64_t (ca_size_t n, boolean8_t *m,
12183
12184
  char * __restrict__ ptr1, ca_size_t i1,
12184
12185
  char * __restrict__ ptr2, ca_size_t i2)
12185
12186
  {
@@ -12195,7 +12196,7 @@ ca_monop_atan_float64_t (ca_size_t n, boolean8_t *m,
12195
12196
  if ( ! *pm ) {
12196
12197
  p1 = q1 + k*i1;
12197
12198
  p2 = q2 + k*i2;
12198
- { (*p2) = atan(*p1); }
12199
+ { (*p2) = log(*p1); }
12199
12200
  }
12200
12201
  }
12201
12202
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -12210,21 +12211,21 @@ ca_monop_atan_float64_t (ca_size_t n, boolean8_t *m,
12210
12211
  #pragma omp simd
12211
12212
  for (k=0; k<n; k++) {
12212
12213
  p1 = q1 + k; p2 = q2 + k;
12213
- { (*p2) = atan(*p1); }
12214
+ { (*p2) = log(*p1); }
12214
12215
  }
12215
12216
  } else {
12216
12217
  /* strided branch: numo-shape `p += s` increment form. */
12217
12218
  double *p1 = q1;
12218
12219
  double *p2 = q2;
12219
12220
  for (k=0; k<n; k++) {
12220
- { (*p2) = atan(*p1); }
12221
+ { (*p2) = log(*p1); }
12221
12222
  p1 += i1; p2 += i2;
12222
12223
  }
12223
12224
  }
12224
12225
  }
12225
12226
 
12226
12227
  static void
12227
- ca_monop_atan_cmplx64_t (ca_size_t n, boolean8_t *m,
12228
+ ca_monop_log_cmplx64_t (ca_size_t n, boolean8_t *m,
12228
12229
  char * __restrict__ ptr1, ca_size_t i1,
12229
12230
  char * __restrict__ ptr2, ca_size_t i2)
12230
12231
  {
@@ -12240,7 +12241,7 @@ ca_monop_atan_cmplx64_t (ca_size_t n, boolean8_t *m,
12240
12241
  if ( ! *pm ) {
12241
12242
  p1 = q1 + k*i1;
12242
12243
  p2 = q2 + k*i2;
12243
- { (*p2) = catan(*p1); }
12244
+ { (*p2) = clog(*p1); }
12244
12245
  }
12245
12246
  }
12246
12247
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -12255,21 +12256,21 @@ ca_monop_atan_cmplx64_t (ca_size_t n, boolean8_t *m,
12255
12256
  #pragma omp simd
12256
12257
  for (k=0; k<n; k++) {
12257
12258
  p1 = q1 + k; p2 = q2 + k;
12258
- { (*p2) = catan(*p1); }
12259
+ { (*p2) = clog(*p1); }
12259
12260
  }
12260
12261
  } else {
12261
12262
  /* strided branch: numo-shape `p += s` increment form. */
12262
12263
  cmplx64_t *p1 = q1;
12263
12264
  cmplx64_t *p2 = q2;
12264
12265
  for (k=0; k<n; k++) {
12265
- { (*p2) = catan(*p1); }
12266
+ { (*p2) = clog(*p1); }
12266
12267
  p1 += i1; p2 += i2;
12267
12268
  }
12268
12269
  }
12269
12270
  }
12270
12271
 
12271
12272
  static void
12272
- ca_monop_atan_cmplx128_t (ca_size_t n, boolean8_t *m,
12273
+ ca_monop_log_cmplx128_t (ca_size_t n, boolean8_t *m,
12273
12274
  char * __restrict__ ptr1, ca_size_t i1,
12274
12275
  char * __restrict__ ptr2, ca_size_t i2)
12275
12276
  {
@@ -12285,7 +12286,7 @@ ca_monop_atan_cmplx128_t (ca_size_t n, boolean8_t *m,
12285
12286
  if ( ! *pm ) {
12286
12287
  p1 = q1 + k*i1;
12287
12288
  p2 = q2 + k*i2;
12288
- { (*p2) = catan(*p1); }
12289
+ { (*p2) = clog(*p1); }
12289
12290
  }
12290
12291
  }
12291
12292
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -12300,21 +12301,21 @@ ca_monop_atan_cmplx128_t (ca_size_t n, boolean8_t *m,
12300
12301
  #pragma omp simd
12301
12302
  for (k=0; k<n; k++) {
12302
12303
  p1 = q1 + k; p2 = q2 + k;
12303
- { (*p2) = catan(*p1); }
12304
+ { (*p2) = clog(*p1); }
12304
12305
  }
12305
12306
  } else {
12306
12307
  /* strided branch: numo-shape `p += s` increment form. */
12307
12308
  cmplx128_t *p1 = q1;
12308
12309
  cmplx128_t *p2 = q2;
12309
12310
  for (k=0; k<n; k++) {
12310
- { (*p2) = catan(*p1); }
12311
+ { (*p2) = clog(*p1); }
12311
12312
  p1 += i1; p2 += i2;
12312
12313
  }
12313
12314
  }
12314
12315
  }
12315
12316
 
12316
12317
  static void
12317
- ca_monop_atan_VALUE (ca_size_t n, boolean8_t *m,
12318
+ ca_monop_log_VALUE (ca_size_t n, boolean8_t *m,
12318
12319
  char * __restrict__ ptr1, ca_size_t i1,
12319
12320
  char * __restrict__ ptr2, ca_size_t i2)
12320
12321
  {
@@ -12333,9 +12334,9 @@ ca_monop_atan_VALUE (ca_size_t n, boolean8_t *m,
12333
12334
  { {
12334
12335
  VALUE _obj_arg = (*p1);
12335
12336
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
12336
- (*p2) = DBL2NUM(atan(NUM2DBL(_obj_arg)));
12337
+ (*p2) = DBL2NUM(log(NUM2DBL(_obj_arg)));
12337
12338
  } else {
12338
- (*p2) = rb_funcall(_obj_arg, rb_intern("atan"), 0);
12339
+ (*p2) = rb_funcall(_obj_arg, rb_intern("log"), 0);
12339
12340
  }
12340
12341
  }
12341
12342
  }
@@ -12356,9 +12357,9 @@ ca_monop_atan_VALUE (ca_size_t n, boolean8_t *m,
12356
12357
  { {
12357
12358
  VALUE _obj_arg = (*p1);
12358
12359
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
12359
- (*p2) = DBL2NUM(atan(NUM2DBL(_obj_arg)));
12360
+ (*p2) = DBL2NUM(log(NUM2DBL(_obj_arg)));
12360
12361
  } else {
12361
- (*p2) = rb_funcall(_obj_arg, rb_intern("atan"), 0);
12362
+ (*p2) = rb_funcall(_obj_arg, rb_intern("log"), 0);
12362
12363
  }
12363
12364
  }
12364
12365
  }
@@ -12371,9 +12372,9 @@ ca_monop_atan_VALUE (ca_size_t n, boolean8_t *m,
12371
12372
  { {
12372
12373
  VALUE _obj_arg = (*p1);
12373
12374
  if (RB_FLOAT_TYPE_P(_obj_arg) || RB_INTEGER_TYPE_P(_obj_arg) || RB_TYPE_P(_obj_arg, T_RATIONAL)) {
12374
- (*p2) = DBL2NUM(atan(NUM2DBL(_obj_arg)));
12375
+ (*p2) = DBL2NUM(log(NUM2DBL(_obj_arg)));
12375
12376
  } else {
12376
- (*p2) = rb_funcall(_obj_arg, rb_intern("atan"), 0);
12377
+ (*p2) = rb_funcall(_obj_arg, rb_intern("log"), 0);
12377
12378
  }
12378
12379
  }
12379
12380
  }
@@ -12383,7 +12384,7 @@ ca_monop_atan_VALUE (ca_size_t n, boolean8_t *m,
12383
12384
  }
12384
12385
 
12385
12386
  ca_monop_func_t
12386
- ca_monop_atan[CA_NTYPE] = {
12387
+ ca_monop_log[CA_NTYPE] = {
12387
12388
  ca_monop_not_implement,
12388
12389
  ca_monop_not_implement,
12389
12390
  ca_monop_not_implement,
@@ -12394,28 +12395,28 @@ ca_monop_atan[CA_NTYPE] = {
12394
12395
  ca_monop_not_implement,
12395
12396
  ca_monop_not_implement,
12396
12397
  ca_monop_not_implement,
12397
- ca_monop_atan_float32_t,
12398
- ca_monop_atan_float64_t,
12398
+ ca_monop_log_float32_t,
12399
+ ca_monop_log_float64_t,
12399
12400
  ca_monop_not_implement,
12400
- ca_monop_atan_cmplx64_t,
12401
- ca_monop_atan_cmplx128_t,
12401
+ ca_monop_log_cmplx64_t,
12402
+ ca_monop_log_cmplx128_t,
12402
12403
  ca_monop_not_implement,
12403
- ca_monop_atan_VALUE,
12404
+ ca_monop_log_VALUE,
12404
12405
  };
12405
12406
 
12406
- VALUE rb_ca_atan (VALUE self)
12407
+ VALUE rb_ca_log (VALUE self)
12407
12408
  {
12408
12409
  if ( rb_ca_is_integer_type(self) ) {
12409
12410
  self = rb_ca_wrap_readonly(self, INT2NUM(CA_FLOAT64));
12410
12411
  }
12411
- return rb_ca_call_monop(self, ca_monop_atan);
12412
+ return rb_ca_call_monop(self, ca_monop_log);
12412
12413
  }
12413
12414
 
12414
- VALUE rb_ca_atan_bang (VALUE self)
12415
- { return rb_ca_call_monop_bang(self, ca_monop_atan); }
12415
+ VALUE rb_ca_log_bang (VALUE self)
12416
+ { return rb_ca_call_monop_bang(self, ca_monop_log); }
12416
12417
 
12417
- VALUE rb_cmath_atan (VALUE mod, VALUE arg)
12418
- { return ca_math_call(mod, arg, rb_intern("atan")); }
12418
+ VALUE rb_cmath_log (VALUE mod, VALUE arg)
12419
+ { return ca_math_call(mod, arg, rb_intern("log")); }
12419
12420
 
12420
12421
  /* ===== monop exp2 ============================================ */
12421
12422
 
@@ -12436,7 +12437,7 @@ ca_monop_exp2_float32_t (ca_size_t n, boolean8_t *m,
12436
12437
  if ( ! *pm ) {
12437
12438
  p1 = q1 + k*i1;
12438
12439
  p2 = q2 + k*i2;
12439
- { (*p2) = exp2(*p1); }
12440
+ { (*p2) = exp2f(*p1); }
12440
12441
  }
12441
12442
  }
12442
12443
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -12451,14 +12452,14 @@ ca_monop_exp2_float32_t (ca_size_t n, boolean8_t *m,
12451
12452
  #pragma omp simd
12452
12453
  for (k=0; k<n; k++) {
12453
12454
  p1 = q1 + k; p2 = q2 + k;
12454
- { (*p2) = exp2(*p1); }
12455
+ { (*p2) = exp2f(*p1); }
12455
12456
  }
12456
12457
  } else {
12457
12458
  /* strided branch: numo-shape `p += s` increment form. */
12458
12459
  float *p1 = q1;
12459
12460
  float *p2 = q2;
12460
12461
  for (k=0; k<n; k++) {
12461
- { (*p2) = exp2(*p1); }
12462
+ { (*p2) = exp2f(*p1); }
12462
12463
  p1 += i1; p2 += i2;
12463
12464
  }
12464
12465
  }
@@ -12722,7 +12723,7 @@ ca_monop_log10_float32_t (ca_size_t n, boolean8_t *m,
12722
12723
  if ( ! *pm ) {
12723
12724
  p1 = q1 + k*i1;
12724
12725
  p2 = q2 + k*i2;
12725
- { (*p2) = log10(*p1); }
12726
+ { (*p2) = log10f(*p1); }
12726
12727
  }
12727
12728
  }
12728
12729
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -12737,14 +12738,14 @@ ca_monop_log10_float32_t (ca_size_t n, boolean8_t *m,
12737
12738
  #pragma omp simd
12738
12739
  for (k=0; k<n; k++) {
12739
12740
  p1 = q1 + k; p2 = q2 + k;
12740
- { (*p2) = log10(*p1); }
12741
+ { (*p2) = log10f(*p1); }
12741
12742
  }
12742
12743
  } else {
12743
12744
  /* strided branch: numo-shape `p += s` increment form. */
12744
12745
  float *p1 = q1;
12745
12746
  float *p2 = q2;
12746
12747
  for (k=0; k<n; k++) {
12747
- { (*p2) = log10(*p1); }
12748
+ { (*p2) = log10f(*p1); }
12748
12749
  p1 += i1; p2 += i2;
12749
12750
  }
12750
12751
  }
@@ -12918,7 +12919,7 @@ ca_monop_log2_float32_t (ca_size_t n, boolean8_t *m,
12918
12919
  if ( ! *pm ) {
12919
12920
  p1 = q1 + k*i1;
12920
12921
  p2 = q2 + k*i2;
12921
- { (*p2) = log2(*p1); }
12922
+ { (*p2) = log2f(*p1); }
12922
12923
  }
12923
12924
  }
12924
12925
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -12933,14 +12934,14 @@ ca_monop_log2_float32_t (ca_size_t n, boolean8_t *m,
12933
12934
  #pragma omp simd
12934
12935
  for (k=0; k<n; k++) {
12935
12936
  p1 = q1 + k; p2 = q2 + k;
12936
- { (*p2) = log2(*p1); }
12937
+ { (*p2) = log2f(*p1); }
12937
12938
  }
12938
12939
  } else {
12939
12940
  /* strided branch: numo-shape `p += s` increment form. */
12940
12941
  float *p1 = q1;
12941
12942
  float *p2 = q2;
12942
12943
  for (k=0; k<n; k++) {
12943
- { (*p2) = log2(*p1); }
12944
+ { (*p2) = log2f(*p1); }
12944
12945
  p1 += i1; p2 += i2;
12945
12946
  }
12946
12947
  }
@@ -13114,7 +13115,7 @@ ca_monop_logb_float32_t (ca_size_t n, boolean8_t *m,
13114
13115
  if ( ! *pm ) {
13115
13116
  p1 = q1 + k*i1;
13116
13117
  p2 = q2 + k*i2;
13117
- { (*p2) = logb(*p1); }
13118
+ { (*p2) = logbf(*p1); }
13118
13119
  }
13119
13120
  }
13120
13121
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -13129,14 +13130,14 @@ ca_monop_logb_float32_t (ca_size_t n, boolean8_t *m,
13129
13130
  #pragma omp simd
13130
13131
  for (k=0; k<n; k++) {
13131
13132
  p1 = q1 + k; p2 = q2 + k;
13132
- { (*p2) = logb(*p1); }
13133
+ { (*p2) = logbf(*p1); }
13133
13134
  }
13134
13135
  } else {
13135
13136
  /* strided branch: numo-shape `p += s` increment form. */
13136
13137
  float *p1 = q1;
13137
13138
  float *p2 = q2;
13138
13139
  for (k=0; k<n; k++) {
13139
- { (*p2) = logb(*p1); }
13140
+ { (*p2) = logbf(*p1); }
13140
13141
  p1 += i1; p2 += i2;
13141
13142
  }
13142
13143
  }
@@ -13310,7 +13311,7 @@ ca_monop_exp10_float32_t (ca_size_t n, boolean8_t *m,
13310
13311
  if ( ! *pm ) {
13311
13312
  p1 = q1 + k*i1;
13312
13313
  p2 = q2 + k*i2;
13313
- { (*p2) = pow(10, (*p1)); }
13314
+ { (*p2) = powf(10, (*p1)); }
13314
13315
  }
13315
13316
  }
13316
13317
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -13325,14 +13326,14 @@ ca_monop_exp10_float32_t (ca_size_t n, boolean8_t *m,
13325
13326
  #pragma omp simd
13326
13327
  for (k=0; k<n; k++) {
13327
13328
  p1 = q1 + k; p2 = q2 + k;
13328
- { (*p2) = pow(10, (*p1)); }
13329
+ { (*p2) = powf(10, (*p1)); }
13329
13330
  }
13330
13331
  } else {
13331
13332
  /* strided branch: numo-shape `p += s` increment form. */
13332
13333
  float *p1 = q1;
13333
13334
  float *p2 = q2;
13334
13335
  for (k=0; k<n; k++) {
13335
- { (*p2) = pow(10, (*p1)); }
13336
+ { (*p2) = powf(10, (*p1)); }
13336
13337
  p1 += i1; p2 += i2;
13337
13338
  }
13338
13339
  }
@@ -13596,7 +13597,7 @@ ca_monop_sinh_float32_t (ca_size_t n, boolean8_t *m,
13596
13597
  if ( ! *pm ) {
13597
13598
  p1 = q1 + k*i1;
13598
13599
  p2 = q2 + k*i2;
13599
- { (*p2) = sinh(*p1); }
13600
+ { (*p2) = sinhf(*p1); }
13600
13601
  }
13601
13602
  }
13602
13603
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -13611,14 +13612,14 @@ ca_monop_sinh_float32_t (ca_size_t n, boolean8_t *m,
13611
13612
  #pragma omp simd
13612
13613
  for (k=0; k<n; k++) {
13613
13614
  p1 = q1 + k; p2 = q2 + k;
13614
- { (*p2) = sinh(*p1); }
13615
+ { (*p2) = sinhf(*p1); }
13615
13616
  }
13616
13617
  } else {
13617
13618
  /* strided branch: numo-shape `p += s` increment form. */
13618
13619
  float *p1 = q1;
13619
13620
  float *p2 = q2;
13620
13621
  for (k=0; k<n; k++) {
13621
- { (*p2) = sinh(*p1); }
13622
+ { (*p2) = sinhf(*p1); }
13622
13623
  p1 += i1; p2 += i2;
13623
13624
  }
13624
13625
  }
@@ -13686,7 +13687,7 @@ ca_monop_sinh_cmplx64_t (ca_size_t n, boolean8_t *m,
13686
13687
  if ( ! *pm ) {
13687
13688
  p1 = q1 + k*i1;
13688
13689
  p2 = q2 + k*i2;
13689
- { (*p2) = sinh(*p1); }
13690
+ { (*p2) = csinhf(*p1); }
13690
13691
  }
13691
13692
  }
13692
13693
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -13701,14 +13702,14 @@ ca_monop_sinh_cmplx64_t (ca_size_t n, boolean8_t *m,
13701
13702
  #pragma omp simd
13702
13703
  for (k=0; k<n; k++) {
13703
13704
  p1 = q1 + k; p2 = q2 + k;
13704
- { (*p2) = sinh(*p1); }
13705
+ { (*p2) = csinhf(*p1); }
13705
13706
  }
13706
13707
  } else {
13707
13708
  /* strided branch: numo-shape `p += s` increment form. */
13708
13709
  cmplx64_t *p1 = q1;
13709
13710
  cmplx64_t *p2 = q2;
13710
13711
  for (k=0; k<n; k++) {
13711
- { (*p2) = sinh(*p1); }
13712
+ { (*p2) = csinhf(*p1); }
13712
13713
  p1 += i1; p2 += i2;
13713
13714
  }
13714
13715
  }
@@ -13731,7 +13732,7 @@ ca_monop_sinh_cmplx128_t (ca_size_t n, boolean8_t *m,
13731
13732
  if ( ! *pm ) {
13732
13733
  p1 = q1 + k*i1;
13733
13734
  p2 = q2 + k*i2;
13734
- { (*p2) = sinh(*p1); }
13735
+ { (*p2) = csinh(*p1); }
13735
13736
  }
13736
13737
  }
13737
13738
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -13746,14 +13747,14 @@ ca_monop_sinh_cmplx128_t (ca_size_t n, boolean8_t *m,
13746
13747
  #pragma omp simd
13747
13748
  for (k=0; k<n; k++) {
13748
13749
  p1 = q1 + k; p2 = q2 + k;
13749
- { (*p2) = sinh(*p1); }
13750
+ { (*p2) = csinh(*p1); }
13750
13751
  }
13751
13752
  } else {
13752
13753
  /* strided branch: numo-shape `p += s` increment form. */
13753
13754
  cmplx128_t *p1 = q1;
13754
13755
  cmplx128_t *p2 = q2;
13755
13756
  for (k=0; k<n; k++) {
13756
- { (*p2) = sinh(*p1); }
13757
+ { (*p2) = csinh(*p1); }
13757
13758
  p1 += i1; p2 += i2;
13758
13759
  }
13759
13760
  }
@@ -13882,7 +13883,7 @@ ca_monop_cosh_float32_t (ca_size_t n, boolean8_t *m,
13882
13883
  if ( ! *pm ) {
13883
13884
  p1 = q1 + k*i1;
13884
13885
  p2 = q2 + k*i2;
13885
- { (*p2) = cosh(*p1); }
13886
+ { (*p2) = coshf(*p1); }
13886
13887
  }
13887
13888
  }
13888
13889
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -13897,14 +13898,14 @@ ca_monop_cosh_float32_t (ca_size_t n, boolean8_t *m,
13897
13898
  #pragma omp simd
13898
13899
  for (k=0; k<n; k++) {
13899
13900
  p1 = q1 + k; p2 = q2 + k;
13900
- { (*p2) = cosh(*p1); }
13901
+ { (*p2) = coshf(*p1); }
13901
13902
  }
13902
13903
  } else {
13903
13904
  /* strided branch: numo-shape `p += s` increment form. */
13904
13905
  float *p1 = q1;
13905
13906
  float *p2 = q2;
13906
13907
  for (k=0; k<n; k++) {
13907
- { (*p2) = cosh(*p1); }
13908
+ { (*p2) = coshf(*p1); }
13908
13909
  p1 += i1; p2 += i2;
13909
13910
  }
13910
13911
  }
@@ -13972,7 +13973,7 @@ ca_monop_cosh_cmplx64_t (ca_size_t n, boolean8_t *m,
13972
13973
  if ( ! *pm ) {
13973
13974
  p1 = q1 + k*i1;
13974
13975
  p2 = q2 + k*i2;
13975
- { (*p2) = cosh(*p1); }
13976
+ { (*p2) = ccoshf(*p1); }
13976
13977
  }
13977
13978
  }
13978
13979
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -13987,14 +13988,14 @@ ca_monop_cosh_cmplx64_t (ca_size_t n, boolean8_t *m,
13987
13988
  #pragma omp simd
13988
13989
  for (k=0; k<n; k++) {
13989
13990
  p1 = q1 + k; p2 = q2 + k;
13990
- { (*p2) = cosh(*p1); }
13991
+ { (*p2) = ccoshf(*p1); }
13991
13992
  }
13992
13993
  } else {
13993
13994
  /* strided branch: numo-shape `p += s` increment form. */
13994
13995
  cmplx64_t *p1 = q1;
13995
13996
  cmplx64_t *p2 = q2;
13996
13997
  for (k=0; k<n; k++) {
13997
- { (*p2) = cosh(*p1); }
13998
+ { (*p2) = ccoshf(*p1); }
13998
13999
  p1 += i1; p2 += i2;
13999
14000
  }
14000
14001
  }
@@ -14017,7 +14018,7 @@ ca_monop_cosh_cmplx128_t (ca_size_t n, boolean8_t *m,
14017
14018
  if ( ! *pm ) {
14018
14019
  p1 = q1 + k*i1;
14019
14020
  p2 = q2 + k*i2;
14020
- { (*p2) = cosh(*p1); }
14021
+ { (*p2) = ccosh(*p1); }
14021
14022
  }
14022
14023
  }
14023
14024
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -14032,14 +14033,14 @@ ca_monop_cosh_cmplx128_t (ca_size_t n, boolean8_t *m,
14032
14033
  #pragma omp simd
14033
14034
  for (k=0; k<n; k++) {
14034
14035
  p1 = q1 + k; p2 = q2 + k;
14035
- { (*p2) = cosh(*p1); }
14036
+ { (*p2) = ccosh(*p1); }
14036
14037
  }
14037
14038
  } else {
14038
14039
  /* strided branch: numo-shape `p += s` increment form. */
14039
14040
  cmplx128_t *p1 = q1;
14040
14041
  cmplx128_t *p2 = q2;
14041
14042
  for (k=0; k<n; k++) {
14042
- { (*p2) = cosh(*p1); }
14043
+ { (*p2) = ccosh(*p1); }
14043
14044
  p1 += i1; p2 += i2;
14044
14045
  }
14045
14046
  }
@@ -14168,7 +14169,7 @@ ca_monop_tanh_float32_t (ca_size_t n, boolean8_t *m,
14168
14169
  if ( ! *pm ) {
14169
14170
  p1 = q1 + k*i1;
14170
14171
  p2 = q2 + k*i2;
14171
- { (*p2) = tanh(*p1); }
14172
+ { (*p2) = tanhf(*p1); }
14172
14173
  }
14173
14174
  }
14174
14175
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -14183,14 +14184,14 @@ ca_monop_tanh_float32_t (ca_size_t n, boolean8_t *m,
14183
14184
  #pragma omp simd
14184
14185
  for (k=0; k<n; k++) {
14185
14186
  p1 = q1 + k; p2 = q2 + k;
14186
- { (*p2) = tanh(*p1); }
14187
+ { (*p2) = tanhf(*p1); }
14187
14188
  }
14188
14189
  } else {
14189
14190
  /* strided branch: numo-shape `p += s` increment form. */
14190
14191
  float *p1 = q1;
14191
14192
  float *p2 = q2;
14192
14193
  for (k=0; k<n; k++) {
14193
- { (*p2) = tanh(*p1); }
14194
+ { (*p2) = tanhf(*p1); }
14194
14195
  p1 += i1; p2 += i2;
14195
14196
  }
14196
14197
  }
@@ -14258,7 +14259,7 @@ ca_monop_tanh_cmplx64_t (ca_size_t n, boolean8_t *m,
14258
14259
  if ( ! *pm ) {
14259
14260
  p1 = q1 + k*i1;
14260
14261
  p2 = q2 + k*i2;
14261
- { (*p2) = tanh(*p1); }
14262
+ { (*p2) = ctanhf(*p1); }
14262
14263
  }
14263
14264
  }
14264
14265
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -14273,14 +14274,14 @@ ca_monop_tanh_cmplx64_t (ca_size_t n, boolean8_t *m,
14273
14274
  #pragma omp simd
14274
14275
  for (k=0; k<n; k++) {
14275
14276
  p1 = q1 + k; p2 = q2 + k;
14276
- { (*p2) = tanh(*p1); }
14277
+ { (*p2) = ctanhf(*p1); }
14277
14278
  }
14278
14279
  } else {
14279
14280
  /* strided branch: numo-shape `p += s` increment form. */
14280
14281
  cmplx64_t *p1 = q1;
14281
14282
  cmplx64_t *p2 = q2;
14282
14283
  for (k=0; k<n; k++) {
14283
- { (*p2) = tanh(*p1); }
14284
+ { (*p2) = ctanhf(*p1); }
14284
14285
  p1 += i1; p2 += i2;
14285
14286
  }
14286
14287
  }
@@ -14303,7 +14304,7 @@ ca_monop_tanh_cmplx128_t (ca_size_t n, boolean8_t *m,
14303
14304
  if ( ! *pm ) {
14304
14305
  p1 = q1 + k*i1;
14305
14306
  p2 = q2 + k*i2;
14306
- { (*p2) = tanh(*p1); }
14307
+ { (*p2) = ctanh(*p1); }
14307
14308
  }
14308
14309
  }
14309
14310
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -14318,14 +14319,14 @@ ca_monop_tanh_cmplx128_t (ca_size_t n, boolean8_t *m,
14318
14319
  #pragma omp simd
14319
14320
  for (k=0; k<n; k++) {
14320
14321
  p1 = q1 + k; p2 = q2 + k;
14321
- { (*p2) = tanh(*p1); }
14322
+ { (*p2) = ctanh(*p1); }
14322
14323
  }
14323
14324
  } else {
14324
14325
  /* strided branch: numo-shape `p += s` increment form. */
14325
14326
  cmplx128_t *p1 = q1;
14326
14327
  cmplx128_t *p2 = q2;
14327
14328
  for (k=0; k<n; k++) {
14328
- { (*p2) = tanh(*p1); }
14329
+ { (*p2) = ctanh(*p1); }
14329
14330
  p1 += i1; p2 += i2;
14330
14331
  }
14331
14332
  }
@@ -14454,7 +14455,7 @@ ca_monop_asinh_float32_t (ca_size_t n, boolean8_t *m,
14454
14455
  if ( ! *pm ) {
14455
14456
  p1 = q1 + k*i1;
14456
14457
  p2 = q2 + k*i2;
14457
- { (*p2) = asinh(*p1); }
14458
+ { (*p2) = asinhf(*p1); }
14458
14459
  }
14459
14460
  }
14460
14461
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -14469,14 +14470,14 @@ ca_monop_asinh_float32_t (ca_size_t n, boolean8_t *m,
14469
14470
  #pragma omp simd
14470
14471
  for (k=0; k<n; k++) {
14471
14472
  p1 = q1 + k; p2 = q2 + k;
14472
- { (*p2) = asinh(*p1); }
14473
+ { (*p2) = asinhf(*p1); }
14473
14474
  }
14474
14475
  } else {
14475
14476
  /* strided branch: numo-shape `p += s` increment form. */
14476
14477
  float *p1 = q1;
14477
14478
  float *p2 = q2;
14478
14479
  for (k=0; k<n; k++) {
14479
- { (*p2) = asinh(*p1); }
14480
+ { (*p2) = asinhf(*p1); }
14480
14481
  p1 += i1; p2 += i2;
14481
14482
  }
14482
14483
  }
@@ -14544,7 +14545,7 @@ ca_monop_asinh_cmplx64_t (ca_size_t n, boolean8_t *m,
14544
14545
  if ( ! *pm ) {
14545
14546
  p1 = q1 + k*i1;
14546
14547
  p2 = q2 + k*i2;
14547
- { (*p2) = asinh(*p1); }
14548
+ { (*p2) = casinhf(*p1); }
14548
14549
  }
14549
14550
  }
14550
14551
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -14559,14 +14560,14 @@ ca_monop_asinh_cmplx64_t (ca_size_t n, boolean8_t *m,
14559
14560
  #pragma omp simd
14560
14561
  for (k=0; k<n; k++) {
14561
14562
  p1 = q1 + k; p2 = q2 + k;
14562
- { (*p2) = asinh(*p1); }
14563
+ { (*p2) = casinhf(*p1); }
14563
14564
  }
14564
14565
  } else {
14565
14566
  /* strided branch: numo-shape `p += s` increment form. */
14566
14567
  cmplx64_t *p1 = q1;
14567
14568
  cmplx64_t *p2 = q2;
14568
14569
  for (k=0; k<n; k++) {
14569
- { (*p2) = asinh(*p1); }
14570
+ { (*p2) = casinhf(*p1); }
14570
14571
  p1 += i1; p2 += i2;
14571
14572
  }
14572
14573
  }
@@ -14589,7 +14590,7 @@ ca_monop_asinh_cmplx128_t (ca_size_t n, boolean8_t *m,
14589
14590
  if ( ! *pm ) {
14590
14591
  p1 = q1 + k*i1;
14591
14592
  p2 = q2 + k*i2;
14592
- { (*p2) = asinh(*p1); }
14593
+ { (*p2) = casinh(*p1); }
14593
14594
  }
14594
14595
  }
14595
14596
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -14604,14 +14605,14 @@ ca_monop_asinh_cmplx128_t (ca_size_t n, boolean8_t *m,
14604
14605
  #pragma omp simd
14605
14606
  for (k=0; k<n; k++) {
14606
14607
  p1 = q1 + k; p2 = q2 + k;
14607
- { (*p2) = asinh(*p1); }
14608
+ { (*p2) = casinh(*p1); }
14608
14609
  }
14609
14610
  } else {
14610
14611
  /* strided branch: numo-shape `p += s` increment form. */
14611
14612
  cmplx128_t *p1 = q1;
14612
14613
  cmplx128_t *p2 = q2;
14613
14614
  for (k=0; k<n; k++) {
14614
- { (*p2) = asinh(*p1); }
14615
+ { (*p2) = casinh(*p1); }
14615
14616
  p1 += i1; p2 += i2;
14616
14617
  }
14617
14618
  }
@@ -14740,7 +14741,7 @@ ca_monop_acosh_float32_t (ca_size_t n, boolean8_t *m,
14740
14741
  if ( ! *pm ) {
14741
14742
  p1 = q1 + k*i1;
14742
14743
  p2 = q2 + k*i2;
14743
- { (*p2) = acosh(*p1); }
14744
+ { (*p2) = acoshf(*p1); }
14744
14745
  }
14745
14746
  }
14746
14747
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -14755,14 +14756,14 @@ ca_monop_acosh_float32_t (ca_size_t n, boolean8_t *m,
14755
14756
  #pragma omp simd
14756
14757
  for (k=0; k<n; k++) {
14757
14758
  p1 = q1 + k; p2 = q2 + k;
14758
- { (*p2) = acosh(*p1); }
14759
+ { (*p2) = acoshf(*p1); }
14759
14760
  }
14760
14761
  } else {
14761
14762
  /* strided branch: numo-shape `p += s` increment form. */
14762
14763
  float *p1 = q1;
14763
14764
  float *p2 = q2;
14764
14765
  for (k=0; k<n; k++) {
14765
- { (*p2) = acosh(*p1); }
14766
+ { (*p2) = acoshf(*p1); }
14766
14767
  p1 += i1; p2 += i2;
14767
14768
  }
14768
14769
  }
@@ -14830,7 +14831,7 @@ ca_monop_acosh_cmplx64_t (ca_size_t n, boolean8_t *m,
14830
14831
  if ( ! *pm ) {
14831
14832
  p1 = q1 + k*i1;
14832
14833
  p2 = q2 + k*i2;
14833
- { (*p2) = acosh(*p1); }
14834
+ { (*p2) = cacoshf(*p1); }
14834
14835
  }
14835
14836
  }
14836
14837
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -14845,14 +14846,14 @@ ca_monop_acosh_cmplx64_t (ca_size_t n, boolean8_t *m,
14845
14846
  #pragma omp simd
14846
14847
  for (k=0; k<n; k++) {
14847
14848
  p1 = q1 + k; p2 = q2 + k;
14848
- { (*p2) = acosh(*p1); }
14849
+ { (*p2) = cacoshf(*p1); }
14849
14850
  }
14850
14851
  } else {
14851
14852
  /* strided branch: numo-shape `p += s` increment form. */
14852
14853
  cmplx64_t *p1 = q1;
14853
14854
  cmplx64_t *p2 = q2;
14854
14855
  for (k=0; k<n; k++) {
14855
- { (*p2) = acosh(*p1); }
14856
+ { (*p2) = cacoshf(*p1); }
14856
14857
  p1 += i1; p2 += i2;
14857
14858
  }
14858
14859
  }
@@ -14875,7 +14876,7 @@ ca_monop_acosh_cmplx128_t (ca_size_t n, boolean8_t *m,
14875
14876
  if ( ! *pm ) {
14876
14877
  p1 = q1 + k*i1;
14877
14878
  p2 = q2 + k*i2;
14878
- { (*p2) = acosh(*p1); }
14879
+ { (*p2) = cacosh(*p1); }
14879
14880
  }
14880
14881
  }
14881
14882
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -14890,14 +14891,14 @@ ca_monop_acosh_cmplx128_t (ca_size_t n, boolean8_t *m,
14890
14891
  #pragma omp simd
14891
14892
  for (k=0; k<n; k++) {
14892
14893
  p1 = q1 + k; p2 = q2 + k;
14893
- { (*p2) = acosh(*p1); }
14894
+ { (*p2) = cacosh(*p1); }
14894
14895
  }
14895
14896
  } else {
14896
14897
  /* strided branch: numo-shape `p += s` increment form. */
14897
14898
  cmplx128_t *p1 = q1;
14898
14899
  cmplx128_t *p2 = q2;
14899
14900
  for (k=0; k<n; k++) {
14900
- { (*p2) = acosh(*p1); }
14901
+ { (*p2) = cacosh(*p1); }
14901
14902
  p1 += i1; p2 += i2;
14902
14903
  }
14903
14904
  }
@@ -15026,7 +15027,7 @@ ca_monop_atanh_float32_t (ca_size_t n, boolean8_t *m,
15026
15027
  if ( ! *pm ) {
15027
15028
  p1 = q1 + k*i1;
15028
15029
  p2 = q2 + k*i2;
15029
- { (*p2) = atanh(*p1); }
15030
+ { (*p2) = atanhf(*p1); }
15030
15031
  }
15031
15032
  }
15032
15033
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -15041,14 +15042,14 @@ ca_monop_atanh_float32_t (ca_size_t n, boolean8_t *m,
15041
15042
  #pragma omp simd
15042
15043
  for (k=0; k<n; k++) {
15043
15044
  p1 = q1 + k; p2 = q2 + k;
15044
- { (*p2) = atanh(*p1); }
15045
+ { (*p2) = atanhf(*p1); }
15045
15046
  }
15046
15047
  } else {
15047
15048
  /* strided branch: numo-shape `p += s` increment form. */
15048
15049
  float *p1 = q1;
15049
15050
  float *p2 = q2;
15050
15051
  for (k=0; k<n; k++) {
15051
- { (*p2) = atanh(*p1); }
15052
+ { (*p2) = atanhf(*p1); }
15052
15053
  p1 += i1; p2 += i2;
15053
15054
  }
15054
15055
  }
@@ -15116,7 +15117,7 @@ ca_monop_atanh_cmplx64_t (ca_size_t n, boolean8_t *m,
15116
15117
  if ( ! *pm ) {
15117
15118
  p1 = q1 + k*i1;
15118
15119
  p2 = q2 + k*i2;
15119
- { (*p2) = atanh(*p1); }
15120
+ { (*p2) = catanhf(*p1); }
15120
15121
  }
15121
15122
  }
15122
15123
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -15131,14 +15132,14 @@ ca_monop_atanh_cmplx64_t (ca_size_t n, boolean8_t *m,
15131
15132
  #pragma omp simd
15132
15133
  for (k=0; k<n; k++) {
15133
15134
  p1 = q1 + k; p2 = q2 + k;
15134
- { (*p2) = atanh(*p1); }
15135
+ { (*p2) = catanhf(*p1); }
15135
15136
  }
15136
15137
  } else {
15137
15138
  /* strided branch: numo-shape `p += s` increment form. */
15138
15139
  cmplx64_t *p1 = q1;
15139
15140
  cmplx64_t *p2 = q2;
15140
15141
  for (k=0; k<n; k++) {
15141
- { (*p2) = atanh(*p1); }
15142
+ { (*p2) = catanhf(*p1); }
15142
15143
  p1 += i1; p2 += i2;
15143
15144
  }
15144
15145
  }
@@ -15161,7 +15162,7 @@ ca_monop_atanh_cmplx128_t (ca_size_t n, boolean8_t *m,
15161
15162
  if ( ! *pm ) {
15162
15163
  p1 = q1 + k*i1;
15163
15164
  p2 = q2 + k*i2;
15164
- { (*p2) = atanh(*p1); }
15165
+ { (*p2) = catanh(*p1); }
15165
15166
  }
15166
15167
  }
15167
15168
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -15176,14 +15177,14 @@ ca_monop_atanh_cmplx128_t (ca_size_t n, boolean8_t *m,
15176
15177
  #pragma omp simd
15177
15178
  for (k=0; k<n; k++) {
15178
15179
  p1 = q1 + k; p2 = q2 + k;
15179
- { (*p2) = atanh(*p1); }
15180
+ { (*p2) = catanh(*p1); }
15180
15181
  }
15181
15182
  } else {
15182
15183
  /* strided branch: numo-shape `p += s` increment form. */
15183
15184
  cmplx128_t *p1 = q1;
15184
15185
  cmplx128_t *p2 = q2;
15185
15186
  for (k=0; k<n; k++) {
15186
- { (*p2) = atanh(*p1); }
15187
+ { (*p2) = catanh(*p1); }
15187
15188
  p1 += i1; p2 += i2;
15188
15189
  }
15189
15190
  }
@@ -15312,7 +15313,7 @@ ca_monop_expm1_float32_t (ca_size_t n, boolean8_t *m,
15312
15313
  if ( ! *pm ) {
15313
15314
  p1 = q1 + k*i1;
15314
15315
  p2 = q2 + k*i2;
15315
- { (*p2) = expm1(*p1); }
15316
+ { (*p2) = expm1f(*p1); }
15316
15317
  }
15317
15318
  }
15318
15319
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -15327,14 +15328,14 @@ ca_monop_expm1_float32_t (ca_size_t n, boolean8_t *m,
15327
15328
  #pragma omp simd
15328
15329
  for (k=0; k<n; k++) {
15329
15330
  p1 = q1 + k; p2 = q2 + k;
15330
- { (*p2) = expm1(*p1); }
15331
+ { (*p2) = expm1f(*p1); }
15331
15332
  }
15332
15333
  } else {
15333
15334
  /* strided branch: numo-shape `p += s` increment form. */
15334
15335
  float *p1 = q1;
15335
15336
  float *p2 = q2;
15336
15337
  for (k=0; k<n; k++) {
15337
- { (*p2) = expm1(*p1); }
15338
+ { (*p2) = expm1f(*p1); }
15338
15339
  p1 += i1; p2 += i2;
15339
15340
  }
15340
15341
  }
@@ -15508,7 +15509,7 @@ ca_monop_log1p_float32_t (ca_size_t n, boolean8_t *m,
15508
15509
  if ( ! *pm ) {
15509
15510
  p1 = q1 + k*i1;
15510
15511
  p2 = q2 + k*i2;
15511
- { (*p2) = log1p(*p1); }
15512
+ { (*p2) = log1pf(*p1); }
15512
15513
  }
15513
15514
  }
15514
15515
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -15523,14 +15524,14 @@ ca_monop_log1p_float32_t (ca_size_t n, boolean8_t *m,
15523
15524
  #pragma omp simd
15524
15525
  for (k=0; k<n; k++) {
15525
15526
  p1 = q1 + k; p2 = q2 + k;
15526
- { (*p2) = log1p(*p1); }
15527
+ { (*p2) = log1pf(*p1); }
15527
15528
  }
15528
15529
  } else {
15529
15530
  /* strided branch: numo-shape `p += s` increment form. */
15530
15531
  float *p1 = q1;
15531
15532
  float *p2 = q2;
15532
15533
  for (k=0; k<n; k++) {
15533
- { (*p2) = log1p(*p1); }
15534
+ { (*p2) = log1pf(*p1); }
15534
15535
  p1 += i1; p2 += i2;
15535
15536
  }
15536
15537
  }
@@ -15704,7 +15705,7 @@ ca_monop_rsqrt_float32_t (ca_size_t n, boolean8_t *m,
15704
15705
  if ( ! *pm ) {
15705
15706
  p1 = q1 + k*i1;
15706
15707
  p2 = q2 + k*i2;
15707
- { (*p2) = 1.0 / sqrt(*p1); }
15708
+ { (*p2) = ((float)1.0) / sqrtf(*p1); }
15708
15709
  }
15709
15710
  }
15710
15711
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -15719,14 +15720,14 @@ ca_monop_rsqrt_float32_t (ca_size_t n, boolean8_t *m,
15719
15720
  #pragma omp simd
15720
15721
  for (k=0; k<n; k++) {
15721
15722
  p1 = q1 + k; p2 = q2 + k;
15722
- { (*p2) = 1.0 / sqrt(*p1); }
15723
+ { (*p2) = ((float)1.0) / sqrtf(*p1); }
15723
15724
  }
15724
15725
  } else {
15725
15726
  /* strided branch: numo-shape `p += s` increment form. */
15726
15727
  float *p1 = q1;
15727
15728
  float *p2 = q2;
15728
15729
  for (k=0; k<n; k++) {
15729
- { (*p2) = 1.0 / sqrt(*p1); }
15730
+ { (*p2) = ((float)1.0) / sqrtf(*p1); }
15730
15731
  p1 += i1; p2 += i2;
15731
15732
  }
15732
15733
  }
@@ -15749,7 +15750,7 @@ ca_monop_rsqrt_float64_t (ca_size_t n, boolean8_t *m,
15749
15750
  if ( ! *pm ) {
15750
15751
  p1 = q1 + k*i1;
15751
15752
  p2 = q2 + k*i2;
15752
- { (*p2) = 1.0 / sqrt(*p1); }
15753
+ { (*p2) = ((double)1.0) / sqrt(*p1); }
15753
15754
  }
15754
15755
  }
15755
15756
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -15764,14 +15765,14 @@ ca_monop_rsqrt_float64_t (ca_size_t n, boolean8_t *m,
15764
15765
  #pragma omp simd
15765
15766
  for (k=0; k<n; k++) {
15766
15767
  p1 = q1 + k; p2 = q2 + k;
15767
- { (*p2) = 1.0 / sqrt(*p1); }
15768
+ { (*p2) = ((double)1.0) / sqrt(*p1); }
15768
15769
  }
15769
15770
  } else {
15770
15771
  /* strided branch: numo-shape `p += s` increment form. */
15771
15772
  double *p1 = q1;
15772
15773
  double *p2 = q2;
15773
15774
  for (k=0; k<n; k++) {
15774
- { (*p2) = 1.0 / sqrt(*p1); }
15775
+ { (*p2) = ((double)1.0) / sqrt(*p1); }
15775
15776
  p1 += i1; p2 += i2;
15776
15777
  }
15777
15778
  }
@@ -15794,7 +15795,7 @@ ca_monop_rsqrt_cmplx64_t (ca_size_t n, boolean8_t *m,
15794
15795
  if ( ! *pm ) {
15795
15796
  p1 = q1 + k*i1;
15796
15797
  p2 = q2 + k*i2;
15797
- { (*p2) = 1.0 / csqrt(*p1); }
15798
+ { (*p2) = ((float)1.0) / csqrtf(*p1); }
15798
15799
  }
15799
15800
  }
15800
15801
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -15809,14 +15810,14 @@ ca_monop_rsqrt_cmplx64_t (ca_size_t n, boolean8_t *m,
15809
15810
  #pragma omp simd
15810
15811
  for (k=0; k<n; k++) {
15811
15812
  p1 = q1 + k; p2 = q2 + k;
15812
- { (*p2) = 1.0 / csqrt(*p1); }
15813
+ { (*p2) = ((float)1.0) / csqrtf(*p1); }
15813
15814
  }
15814
15815
  } else {
15815
15816
  /* strided branch: numo-shape `p += s` increment form. */
15816
15817
  cmplx64_t *p1 = q1;
15817
15818
  cmplx64_t *p2 = q2;
15818
15819
  for (k=0; k<n; k++) {
15819
- { (*p2) = 1.0 / csqrt(*p1); }
15820
+ { (*p2) = ((float)1.0) / csqrtf(*p1); }
15820
15821
  p1 += i1; p2 += i2;
15821
15822
  }
15822
15823
  }
@@ -15839,7 +15840,7 @@ ca_monop_rsqrt_cmplx128_t (ca_size_t n, boolean8_t *m,
15839
15840
  if ( ! *pm ) {
15840
15841
  p1 = q1 + k*i1;
15841
15842
  p2 = q2 + k*i2;
15842
- { (*p2) = 1.0 / csqrt(*p1); }
15843
+ { (*p2) = ((double)1.0) / csqrt(*p1); }
15843
15844
  }
15844
15845
  }
15845
15846
  } else if ( i1 == 1 && i2 == 1 ) {
@@ -15854,14 +15855,14 @@ ca_monop_rsqrt_cmplx128_t (ca_size_t n, boolean8_t *m,
15854
15855
  #pragma omp simd
15855
15856
  for (k=0; k<n; k++) {
15856
15857
  p1 = q1 + k; p2 = q2 + k;
15857
- { (*p2) = 1.0 / csqrt(*p1); }
15858
+ { (*p2) = ((double)1.0) / csqrt(*p1); }
15858
15859
  }
15859
15860
  } else {
15860
15861
  /* strided branch: numo-shape `p += s` increment form. */
15861
15862
  cmplx128_t *p1 = q1;
15862
15863
  cmplx128_t *p2 = q2;
15863
15864
  for (k=0; k<n; k++) {
15864
- { (*p2) = 1.0 / csqrt(*p1); }
15865
+ { (*p2) = ((double)1.0) / csqrt(*p1); }
15865
15866
  p1 += i1; p2 += i2;
15866
15867
  }
15867
15868
  }
@@ -18228,9 +18229,6 @@ Init_carray_kernels_monop (void)
18228
18229
  rb_define_method(rb_cCArray, "exp", rb_ca_exp, 0);
18229
18230
  rb_define_method(rb_cCArray, "exp!", rb_ca_exp_bang, 0);
18230
18231
  rb_define_module_function(rb_mCAMath, "exp", rb_cmath_exp, 1);
18231
- rb_define_method(rb_cCArray, "log", rb_ca_log, 0);
18232
- rb_define_method(rb_cCArray, "log!", rb_ca_log_bang, 0);
18233
- rb_define_module_function(rb_mCAMath, "log", rb_cmath_log, 1);
18234
18232
  rb_define_method(rb_cCArray, "sin", rb_ca_sin, 0);
18235
18233
  rb_define_method(rb_cCArray, "sin!", rb_ca_sin_bang, 0);
18236
18234
  rb_define_module_function(rb_mCAMath, "sin", rb_cmath_sin, 1);
@@ -18249,6 +18247,9 @@ Init_carray_kernels_monop (void)
18249
18247
  rb_define_method(rb_cCArray, "atan", rb_ca_atan, 0);
18250
18248
  rb_define_method(rb_cCArray, "atan!", rb_ca_atan_bang, 0);
18251
18249
  rb_define_module_function(rb_mCAMath, "atan", rb_cmath_atan, 1);
18250
+ rb_define_method(rb_cCArray, "log", rb_ca_log, 0);
18251
+ rb_define_method(rb_cCArray, "log!", rb_ca_log_bang, 0);
18252
+ rb_define_module_function(rb_mCAMath, "log", rb_cmath_log, 1);
18252
18253
  rb_define_method(rb_cCArray, "exp2", rb_ca_exp2, 0);
18253
18254
  rb_define_method(rb_cCArray, "exp2!", rb_ca_exp2_bang, 0);
18254
18255
  rb_define_module_function(rb_mCAMath, "exp2", rb_cmath_exp2, 1);