mkl-devel-dpcpp 2025.0.0__py2.py3-none-manylinux_2_28_x86_64.whl

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.

Potentially problematic release.


This version of mkl-devel-dpcpp might be problematic. Click here for more details.

Files changed (82) hide show
  1. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/bfloat16.hpp +26 -0
  2. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/blas/buffer.hpp +42 -0
  3. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/blas/buffer_decls.hpp +880 -0
  4. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/blas/types.hpp +60 -0
  5. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/blas/usm.hpp +42 -0
  6. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/blas/usm_decls.hpp +1240 -0
  7. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/blas.hpp +33 -0
  8. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/dft.hpp +253 -0
  9. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/dfti.hpp +22 -0
  10. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/exceptions.hpp +110 -0
  11. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/experimental/data_fitting/interpolate.hpp +67 -0
  12. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/experimental/data_fitting/spline_and_data_params.hpp +68 -0
  13. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/experimental/data_fitting/splines.hpp +177 -0
  14. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/experimental/data_fitting.hpp +22 -0
  15. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/export.hpp +25 -0
  16. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/lapack/concepts.hpp +55 -0
  17. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/lapack/exceptions.hpp +75 -0
  18. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/lapack/lapack.hpp +1095 -0
  19. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/lapack/scratchpad.hpp +106 -0
  20. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/lapack.hpp +23 -0
  21. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/detail/engine_base.hpp +48 -0
  22. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/bernoulli_impl.hpp +89 -0
  23. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/beta_impl.hpp +464 -0
  24. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/bits_impl.hpp +71 -0
  25. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/distribution_base.hpp +81 -0
  26. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/engine_base.hpp +43 -0
  27. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/engine_helpers_base.hpp +54 -0
  28. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/exponential_impl.hpp +116 -0
  29. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/gamma_impl.hpp +285 -0
  30. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/gaussian_impl.hpp +270 -0
  31. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/lognormal_impl.hpp +105 -0
  32. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mcg31m1_helpers_impl.hpp +117 -0
  33. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mcg31m1_impl.hpp +223 -0
  34. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mcg59_helpers_impl.hpp +118 -0
  35. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mcg59_impl.hpp +266 -0
  36. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mrg32k3a_helpers_impl.hpp +125 -0
  37. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mrg32k3a_impl.hpp +385 -0
  38. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/mrg32k3a_skip_ahead_matrix.hpp +3668 -0
  39. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/philox4x32x10_helpers_impl.hpp +141 -0
  40. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/philox4x32x10_impl.hpp +552 -0
  41. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/poisson_impl.hpp +355 -0
  42. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/types.hpp +58 -0
  43. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/uniform_bits_impl.hpp +51 -0
  44. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/uniform_impl.hpp +289 -0
  45. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/detail/vm_wrappers.hpp +183 -0
  46. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/distributions.hpp +637 -0
  47. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/engine_helpers.hpp +116 -0
  48. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/engines.hpp +187 -0
  49. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/functions.hpp +59 -0
  50. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device/types.hpp +74 -0
  51. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/device.hpp +29 -0
  52. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/distributions.hpp +1913 -0
  53. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/engines.hpp +788 -0
  54. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng/functions.hpp +163 -0
  55. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/rng.hpp +22 -0
  56. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/spblas/sparse_auxiliary.hpp +111 -0
  57. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/spblas/sparse_operations.hpp +446 -0
  58. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/spblas/sparse_structures.hpp +193 -0
  59. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/spblas.hpp +32 -0
  60. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/stats.hpp +356 -0
  61. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/types.hpp +321 -0
  62. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/buffer.hpp +3529 -0
  63. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/decls.hpp +280 -0
  64. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/decls.hpp +81 -0
  65. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/dispatch.hpp +1059 -0
  66. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/ep.hpp +861 -0
  67. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/ha.hpp +860 -0
  68. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/la.hpp +860 -0
  69. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/rts.hpp +4608 -0
  70. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/detail/scalar.hpp +8963 -0
  71. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/device/vm.hpp +460 -0
  72. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/span.hpp +3813 -0
  73. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm/usm.hpp +3581 -0
  74. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl/vm.hpp +30 -0
  75. mkl_devel_dpcpp-2025.0.0.data/data/include/oneapi/mkl.hpp +34 -0
  76. mkl_devel_dpcpp-2025.0.0.data/data/lib/libmkl_sycl.a +0 -0
  77. mkl_devel_dpcpp-2025.0.0.data/data/lib/libmkl_sycl.so +1 -0
  78. mkl_devel_dpcpp-2025.0.0.dist-info/LICENSE.txt +25 -0
  79. mkl_devel_dpcpp-2025.0.0.dist-info/METADATA +24 -0
  80. mkl_devel_dpcpp-2025.0.0.dist-info/RECORD +82 -0
  81. mkl_devel_dpcpp-2025.0.0.dist-info/WHEEL +6 -0
  82. mkl_devel_dpcpp-2025.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1059 @@
1
+ /*******************************************************************************
2
+ * Copyright 2019-2024 Intel Corporation.
3
+ *
4
+ * This software and the related documents are Intel copyrighted materials, and
5
+ * your use of them is governed by the express license under which they were
6
+ * provided to you (License). Unless the License provides otherwise, you may not
7
+ * use, modify, copy, publish, distribute, disclose or transmit this software or
8
+ * the related documents without Intel's prior written permission.
9
+ *
10
+ * This software and the related documents are provided as is, with no express
11
+ * or implied warranties, other than those that are expressly stated in the
12
+ * License.
13
+ *******************************************************************************/
14
+
15
+ #ifndef ONEAPI_MKL_VM_DEVICE_VM_DETAIL_DISPATCH_HPP
16
+ #define ONEAPI_MKL_VM_DEVICE_VM_DETAIL_DISPATCH_HPP 1
17
+
18
+ #include "oneapi/mkl/vm/device/detail/decls.hpp"
19
+
20
+ #include "oneapi/mkl/vm/device/detail/scalar.hpp"
21
+
22
+
23
+ namespace oneapi::mkl::vm::device::detail {
24
+
25
+ template <Function f, typename Tin, typename Tout, Accuracy acc, Feature fea,
26
+ typename = void>
27
+ constexpr bool Exists{false};
28
+
29
+ template <Function f, typename Tin, typename Tout, Accuracy acc, Feature fea>
30
+ constexpr bool Exists<
31
+ f, Tin, Tout, acc, fea,
32
+ std::void_t<decltype(
33
+ std::declval<Evaluator<f, Tin, Tout, acc, fea>>().operator()())>> =
34
+ true;
35
+
36
+ using AccFeaT = std::pair<Accuracy, Feature>;
37
+
38
+ constexpr bool operator>=(enum Accuracy lhs, enum Accuracy rhs) {
39
+ if (Accuracy::kCR == lhs && Accuracy::kCR == rhs) { return true; }
40
+
41
+ if (Accuracy::kCR == lhs && Accuracy::kHA == rhs) { return true; }
42
+ if (Accuracy::kHA == lhs && Accuracy::kHA == rhs) { return true; }
43
+ if (Accuracy::kNS == lhs && Accuracy::kHA == rhs) { return true; }
44
+
45
+ // NS defaults to HA
46
+ if (Accuracy::kCR == lhs && Accuracy::kNS == rhs) { return true; }
47
+ if (Accuracy::kHA == lhs && Accuracy::kNS == rhs) { return true; }
48
+ if (Accuracy::kNS == lhs && Accuracy::kNS == rhs) { return true; }
49
+
50
+ if (Accuracy::kCR == lhs && Accuracy::kLA == rhs) { return true; }
51
+ if (Accuracy::kHA == lhs && Accuracy::kLA == rhs) { return true; }
52
+ if (Accuracy::kLA == lhs && Accuracy::kLA == rhs) { return true; }
53
+
54
+ if (Accuracy::kCR == lhs && Accuracy::kEP == rhs) { return true; }
55
+ if (Accuracy::kHA == lhs && Accuracy::kEP == rhs) { return true; }
56
+ if (Accuracy::kLA == lhs && Accuracy::kEP == rhs) { return true; }
57
+ if (Accuracy::kEP == lhs && Accuracy::kEP == rhs) { return true; }
58
+
59
+ return false;
60
+ }
61
+
62
+ using AccFeaT = std::pair<Accuracy, Feature>;
63
+
64
+ template <Function Func, typename Tin, typename Tout,
65
+ Accuracy Acc = Accuracy::kNS, Feature Fea = Feature::kNS>
66
+ struct CompileTimeSelector {
67
+ static constexpr auto result = []() -> AccFeaT {
68
+ if constexpr (Exists<Func, Tin, Tout, Acc, Fea>) {
69
+ return AccFeaT{Acc, Fea};
70
+ }
71
+
72
+ if constexpr (Acc == Accuracy::kCR &&
73
+ Exists<Func, Tin, Tout, Accuracy::kCR, Feature::kTA>) {
74
+ return AccFeaT{Accuracy::kCR, Feature::kTA};
75
+ }
76
+ if constexpr (Acc == Accuracy::kCR &&
77
+ Exists<Func, Tin, Tout, Accuracy::kCR, Feature::kGE>) {
78
+ return AccFeaT{Accuracy::kCR, Feature::kGE};
79
+ }
80
+ if constexpr (Acc == Accuracy::kCR &&
81
+ Exists<Func, Tin, Tout, Accuracy::kCR, Feature::kSO>) {
82
+ return AccFeaT{Accuracy::kCR, Feature::kSO};
83
+ }
84
+ if constexpr (Acc == Accuracy::kCR &&
85
+ Exists<Func, Tin, Tout, Accuracy::kCR, Feature::kDR>) {
86
+ return AccFeaT{Accuracy::kCR, Feature::kDR};
87
+ }
88
+
89
+ if constexpr (Acc == Accuracy::kHA &&
90
+ Exists<Func, Tin, Tout, Accuracy::kHA, Feature::kTA>) {
91
+ return AccFeaT{Accuracy::kHA, Feature::kTA};
92
+ }
93
+ if constexpr (Acc == Accuracy::kHA &&
94
+ Exists<Func, Tin, Tout, Accuracy::kHA, Feature::kGE>) {
95
+ return AccFeaT{Accuracy::kHA, Feature::kGE};
96
+ }
97
+ if constexpr (Acc == Accuracy::kHA &&
98
+ Exists<Func, Tin, Tout, Accuracy::kHA, Feature::kSO>) {
99
+ return AccFeaT{Accuracy::kHA, Feature::kSO};
100
+ }
101
+ if constexpr (Acc == Accuracy::kHA &&
102
+ Exists<Func, Tin, Tout, Accuracy::kHA, Feature::kDR>) {
103
+ return AccFeaT{Accuracy::kHA, Feature::kDR};
104
+ }
105
+ if constexpr (Acc == Accuracy::kHA &&
106
+ Exists<Func, Tin, Tout, Accuracy::kCR, Feature::kTA>) {
107
+ return AccFeaT{Accuracy::kCR, Feature::kTA};
108
+ }
109
+ if constexpr (Acc == Accuracy::kHA &&
110
+ Exists<Func, Tin, Tout, Accuracy::kCR, Feature::kGE>) {
111
+ return AccFeaT{Accuracy::kCR, Feature::kGE};
112
+ }
113
+ if constexpr (Acc == Accuracy::kHA &&
114
+ Exists<Func, Tin, Tout, Accuracy::kCR, Feature::kSO>) {
115
+ return AccFeaT{Accuracy::kCR, Feature::kSO};
116
+ }
117
+ if constexpr (Acc == Accuracy::kHA &&
118
+ Exists<Func, Tin, Tout, Accuracy::kCR, Feature::kDR>) {
119
+ return AccFeaT{Accuracy::kCR, Feature::kDR};
120
+ }
121
+
122
+ if constexpr (Acc == Accuracy::kLA &&
123
+ Exists<Func, Tin, Tout, Accuracy::kLA, Feature::kTA>) {
124
+ return AccFeaT{Accuracy::kLA, Feature::kTA};
125
+ }
126
+ if constexpr (Acc == Accuracy::kLA &&
127
+ Exists<Func, Tin, Tout, Accuracy::kLA, Feature::kGE>) {
128
+ return AccFeaT{Accuracy::kLA, Feature::kGE};
129
+ }
130
+ if constexpr (Acc == Accuracy::kLA &&
131
+ Exists<Func, Tin, Tout, Accuracy::kLA, Feature::kSO>) {
132
+ return AccFeaT{Accuracy::kLA, Feature::kSO};
133
+ }
134
+ if constexpr (Acc == Accuracy::kLA &&
135
+ Exists<Func, Tin, Tout, Accuracy::kLA, Feature::kDR>) {
136
+ return AccFeaT{Accuracy::kLA, Feature::kDR};
137
+ }
138
+ if constexpr (Acc == Accuracy::kLA &&
139
+ Exists<Func, Tin, Tout, Accuracy::kHA, Feature::kTA>) {
140
+ return AccFeaT{Accuracy::kHA, Feature::kTA};
141
+ }
142
+ if constexpr (Acc == Accuracy::kLA &&
143
+ Exists<Func, Tin, Tout, Accuracy::kHA, Feature::kGE>) {
144
+ return AccFeaT{Accuracy::kHA, Feature::kGE};
145
+ }
146
+ if constexpr (Acc == Accuracy::kLA &&
147
+ Exists<Func, Tin, Tout, Accuracy::kHA, Feature::kSO>) {
148
+ return AccFeaT{Accuracy::kHA, Feature::kSO};
149
+ }
150
+ if constexpr (Acc == Accuracy::kLA &&
151
+ Exists<Func, Tin, Tout, Accuracy::kHA, Feature::kDR>) {
152
+ return AccFeaT{Accuracy::kHA, Feature::kDR};
153
+ }
154
+ if constexpr (Acc == Accuracy::kLA &&
155
+ Exists<Func, Tin, Tout, Accuracy::kCR, Feature::kTA>) {
156
+ return AccFeaT{Accuracy::kCR, Feature::kTA};
157
+ }
158
+ if constexpr (Acc == Accuracy::kLA &&
159
+ Exists<Func, Tin, Tout, Accuracy::kCR, Feature::kGE>) {
160
+ return AccFeaT{Accuracy::kCR, Feature::kGE};
161
+ }
162
+ if constexpr (Acc == Accuracy::kLA &&
163
+ Exists<Func, Tin, Tout, Accuracy::kCR, Feature::kSO>) {
164
+ return AccFeaT{Accuracy::kCR, Feature::kSO};
165
+ }
166
+ if constexpr (Acc == Accuracy::kLA &&
167
+ Exists<Func, Tin, Tout, Accuracy::kCR, Feature::kDR>) {
168
+ return AccFeaT{Accuracy::kCR, Feature::kDR};
169
+ }
170
+
171
+ if constexpr (Acc == Accuracy::kEP &&
172
+ Exists<Func, Tin, Tout, Accuracy::kEP, Feature::kTA>) {
173
+ return AccFeaT{Accuracy::kEP, Feature::kTA};
174
+ }
175
+ if constexpr (Acc == Accuracy::kEP &&
176
+ Exists<Func, Tin, Tout, Accuracy::kEP, Feature::kGE>) {
177
+ return AccFeaT{Accuracy::kEP, Feature::kGE};
178
+ }
179
+ if constexpr (Acc == Accuracy::kEP &&
180
+ Exists<Func, Tin, Tout, Accuracy::kEP, Feature::kSO>) {
181
+ return AccFeaT{Accuracy::kEP, Feature::kSO};
182
+ }
183
+ if constexpr (Acc == Accuracy::kEP &&
184
+ Exists<Func, Tin, Tout, Accuracy::kEP, Feature::kDR>) {
185
+ return AccFeaT{Accuracy::kEP, Feature::kDR};
186
+ }
187
+ if constexpr (Acc == Accuracy::kEP &&
188
+ Exists<Func, Tin, Tout, Accuracy::kLA, Feature::kTA>) {
189
+ return AccFeaT{Accuracy::kLA, Feature::kTA};
190
+ }
191
+ if constexpr (Acc == Accuracy::kEP &&
192
+ Exists<Func, Tin, Tout, Accuracy::kLA, Feature::kGE>) {
193
+ return AccFeaT{Accuracy::kLA, Feature::kGE};
194
+ }
195
+ if constexpr (Acc == Accuracy::kEP &&
196
+ Exists<Func, Tin, Tout, Accuracy::kLA, Feature::kSO>) {
197
+ return AccFeaT{Accuracy::kLA, Feature::kSO};
198
+ }
199
+ if constexpr (Acc == Accuracy::kEP &&
200
+ Exists<Func, Tin, Tout, Accuracy::kLA, Feature::kDR>) {
201
+ return AccFeaT{Accuracy::kLA, Feature::kDR};
202
+ }
203
+ if constexpr (Acc == Accuracy::kEP &&
204
+ Exists<Func, Tin, Tout, Accuracy::kHA, Feature::kTA>) {
205
+ return AccFeaT{Accuracy::kHA, Feature::kTA};
206
+ }
207
+ if constexpr (Acc == Accuracy::kEP &&
208
+ Exists<Func, Tin, Tout, Accuracy::kHA, Feature::kGE>) {
209
+ return AccFeaT{Accuracy::kHA, Feature::kGE};
210
+ }
211
+ if constexpr (Acc == Accuracy::kEP &&
212
+ Exists<Func, Tin, Tout, Accuracy::kHA, Feature::kSO>) {
213
+ return AccFeaT{Accuracy::kHA, Feature::kSO};
214
+ }
215
+ if constexpr (Acc == Accuracy::kEP &&
216
+ Exists<Func, Tin, Tout, Accuracy::kHA, Feature::kDR>) {
217
+ return AccFeaT{Accuracy::kHA, Feature::kDR};
218
+ }
219
+ if constexpr (Acc == Accuracy::kEP &&
220
+ Exists<Func, Tin, Tout, Accuracy::kCR, Feature::kTA>) {
221
+ return AccFeaT{Accuracy::kCR, Feature::kTA};
222
+ }
223
+ if constexpr (Acc == Accuracy::kEP &&
224
+ Exists<Func, Tin, Tout, Accuracy::kCR, Feature::kGE>) {
225
+ return AccFeaT{Accuracy::kCR, Feature::kGE};
226
+ }
227
+ if constexpr (Acc == Accuracy::kEP &&
228
+ Exists<Func, Tin, Tout, Accuracy::kCR, Feature::kSO>) {
229
+ return AccFeaT{Accuracy::kCR, Feature::kSO};
230
+ }
231
+ if constexpr (Acc == Accuracy::kEP &&
232
+ Exists<Func, Tin, Tout, Accuracy::kCR, Feature::kDR>) {
233
+ return AccFeaT{Accuracy::kCR, Feature::kDR};
234
+ }
235
+
236
+ return AccFeaT{Accuracy::kNA, Feature::kNA};
237
+ }();
238
+ };
239
+
240
+ template <Function Func, typename Tin, typename Tout,
241
+ Accuracy Acc = Accuracy::kNS, Feature Fea = Feature::kNS>
242
+ constexpr bool ExistsAtAll =
243
+ CompileTimeSelector<Func, Tin, Tout, Acc, Fea>::result.first !=
244
+ Accuracy::kNA&& CompileTimeSelector<Func, Tin, Tout, Acc, Fea>::result
245
+ .second != Feature::kNA;
246
+
247
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
248
+ typename std::enable_if<ExistsAtAll<Function::kAbs, Tin, Tout, Acc::a>,
249
+ oneapi::mkl::vm::status>::type
250
+ abs(const Tin* a, Tout* y, Acc const& acc = {}) {
251
+ constexpr auto cts =
252
+ CompileTimeSelector<Function::kAbs, Tin, Tout, Acc::a>::result;
253
+ Evaluator<Function::kAbs, Tin, Tout, cts.first, cts.second> EV;
254
+ return EV(a, y);
255
+ }
256
+
257
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
258
+ typename std::enable_if<ExistsAtAll<Function::kAcos, Tin, Tout, Acc::a>,
259
+ oneapi::mkl::vm::status>::type
260
+ acos(const Tin* a, Tout* y, Acc const& acc = {}) {
261
+ constexpr auto cts =
262
+ CompileTimeSelector<Function::kAcos, Tin, Tout, Acc::a>::result;
263
+ Evaluator<Function::kAcos, Tin, Tout, cts.first, cts.second> EV;
264
+ return EV(a, y);
265
+ }
266
+
267
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
268
+ typename std::enable_if<ExistsAtAll<Function::kAcosh, Tin, Tout, Acc::a>,
269
+ oneapi::mkl::vm::status>::type
270
+ acosh(const Tin* a, Tout* y, Acc const& acc = {}) {
271
+ constexpr auto cts =
272
+ CompileTimeSelector<Function::kAcosh, Tin, Tout, Acc::a>::result;
273
+ Evaluator<Function::kAcosh, Tin, Tout, cts.first, cts.second> EV;
274
+ return EV(a, y);
275
+ }
276
+
277
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
278
+ typename std::enable_if<ExistsAtAll<Function::kAcospi, Tin, Tout, Acc::a>,
279
+ oneapi::mkl::vm::status>::type
280
+ acospi(const Tin* a, Tout* y, Acc const& acc = {}) {
281
+ constexpr auto cts =
282
+ CompileTimeSelector<Function::kAcospi, Tin, Tout, Acc::a>::result;
283
+ Evaluator<Function::kAcospi, Tin, Tout, cts.first, cts.second> EV;
284
+ return EV(a, y);
285
+ }
286
+
287
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
288
+ typename std::enable_if<ExistsAtAll<Function::kAdd, Tin, Tout, Acc::a>,
289
+ oneapi::mkl::vm::status>::type
290
+ add(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
291
+ constexpr auto cts =
292
+ CompileTimeSelector<Function::kAdd, Tin, Tout, Acc::a>::result;
293
+ Evaluator<Function::kAdd, Tin, Tout, cts.first, cts.second> EV;
294
+ return EV(a, b, y);
295
+ }
296
+
297
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
298
+ typename std::enable_if<ExistsAtAll<Function::kArg, Tin, Tout, Acc::a>,
299
+ oneapi::mkl::vm::status>::type
300
+ arg(const Tin* a, Tout* y, Acc const& acc = {}) {
301
+ constexpr auto cts =
302
+ CompileTimeSelector<Function::kArg, Tin, Tout, Acc::a>::result;
303
+ Evaluator<Function::kArg, Tin, Tout, cts.first, cts.second> EV;
304
+ return EV(a, y);
305
+ }
306
+
307
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
308
+ typename std::enable_if<ExistsAtAll<Function::kAsin, Tin, Tout, Acc::a>,
309
+ oneapi::mkl::vm::status>::type
310
+ asin(const Tin* a, Tout* y, Acc const& acc = {}) {
311
+ constexpr auto cts =
312
+ CompileTimeSelector<Function::kAsin, Tin, Tout, Acc::a>::result;
313
+ Evaluator<Function::kAsin, Tin, Tout, cts.first, cts.second> EV;
314
+ return EV(a, y);
315
+ }
316
+
317
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
318
+ typename std::enable_if<ExistsAtAll<Function::kAsinh, Tin, Tout, Acc::a>,
319
+ oneapi::mkl::vm::status>::type
320
+ asinh(const Tin* a, Tout* y, Acc const& acc = {}) {
321
+ constexpr auto cts =
322
+ CompileTimeSelector<Function::kAsinh, Tin, Tout, Acc::a>::result;
323
+ Evaluator<Function::kAsinh, Tin, Tout, cts.first, cts.second> EV;
324
+ return EV(a, y);
325
+ }
326
+
327
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
328
+ typename std::enable_if<ExistsAtAll<Function::kAsinpi, Tin, Tout, Acc::a>,
329
+ oneapi::mkl::vm::status>::type
330
+ asinpi(const Tin* a, Tout* y, Acc const& acc = {}) {
331
+ constexpr auto cts =
332
+ CompileTimeSelector<Function::kAsinpi, Tin, Tout, Acc::a>::result;
333
+ Evaluator<Function::kAsinpi, Tin, Tout, cts.first, cts.second> EV;
334
+ return EV(a, y);
335
+ }
336
+
337
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
338
+ typename std::enable_if<ExistsAtAll<Function::kAtan, Tin, Tout, Acc::a>,
339
+ oneapi::mkl::vm::status>::type
340
+ atan(const Tin* a, Tout* y, Acc const& acc = {}) {
341
+ constexpr auto cts =
342
+ CompileTimeSelector<Function::kAtan, Tin, Tout, Acc::a>::result;
343
+ Evaluator<Function::kAtan, Tin, Tout, cts.first, cts.second> EV;
344
+ return EV(a, y);
345
+ }
346
+
347
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
348
+ typename std::enable_if<ExistsAtAll<Function::kAtan2, Tin, Tout, Acc::a>,
349
+ oneapi::mkl::vm::status>::type
350
+ atan2(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
351
+ constexpr auto cts =
352
+ CompileTimeSelector<Function::kAtan2, Tin, Tout, Acc::a>::result;
353
+ Evaluator<Function::kAtan2, Tin, Tout, cts.first, cts.second> EV;
354
+ return EV(a, b, y);
355
+ }
356
+
357
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
358
+ typename std::enable_if<ExistsAtAll<Function::kAtan2pi, Tin, Tout, Acc::a>,
359
+ oneapi::mkl::vm::status>::type
360
+ atan2pi(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
361
+ constexpr auto cts =
362
+ CompileTimeSelector<Function::kAtan2pi, Tin, Tout, Acc::a>::result;
363
+ Evaluator<Function::kAtan2pi, Tin, Tout, cts.first, cts.second> EV;
364
+ return EV(a, b, y);
365
+ }
366
+
367
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
368
+ typename std::enable_if<ExistsAtAll<Function::kAtanh, Tin, Tout, Acc::a>,
369
+ oneapi::mkl::vm::status>::type
370
+ atanh(const Tin* a, Tout* y, Acc const& acc = {}) {
371
+ constexpr auto cts =
372
+ CompileTimeSelector<Function::kAtanh, Tin, Tout, Acc::a>::result;
373
+ Evaluator<Function::kAtanh, Tin, Tout, cts.first, cts.second> EV;
374
+ return EV(a, y);
375
+ }
376
+
377
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
378
+ typename std::enable_if<ExistsAtAll<Function::kAtanpi, Tin, Tout, Acc::a>,
379
+ oneapi::mkl::vm::status>::type
380
+ atanpi(const Tin* a, Tout* y, Acc const& acc = {}) {
381
+ constexpr auto cts =
382
+ CompileTimeSelector<Function::kAtanpi, Tin, Tout, Acc::a>::result;
383
+ Evaluator<Function::kAtanpi, Tin, Tout, cts.first, cts.second> EV;
384
+ return EV(a, y);
385
+ }
386
+
387
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
388
+ typename std::enable_if<ExistsAtAll<Function::kCbrt, Tin, Tout, Acc::a>,
389
+ oneapi::mkl::vm::status>::type
390
+ cbrt(const Tin* a, Tout* y, Acc const& acc = {}) {
391
+ constexpr auto cts =
392
+ CompileTimeSelector<Function::kCbrt, Tin, Tout, Acc::a>::result;
393
+ Evaluator<Function::kCbrt, Tin, Tout, cts.first, cts.second> EV;
394
+ return EV(a, y);
395
+ }
396
+
397
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
398
+ typename std::enable_if<ExistsAtAll<Function::kCdfnorm, Tin, Tout, Acc::a>,
399
+ oneapi::mkl::vm::status>::type
400
+ cdfnorm(const Tin* a, Tout* y, Acc const& acc = {}) {
401
+ constexpr auto cts =
402
+ CompileTimeSelector<Function::kCdfnorm, Tin, Tout, Acc::a>::result;
403
+ Evaluator<Function::kCdfnorm, Tin, Tout, cts.first, cts.second> EV;
404
+ return EV(a, y);
405
+ }
406
+
407
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
408
+ typename std::enable_if<ExistsAtAll<Function::kCdfnorminv, Tin, Tout, Acc::a>,
409
+ oneapi::mkl::vm::status>::type
410
+ cdfnorminv(const Tin* a, Tout* y, Acc const& acc = {}) {
411
+ constexpr auto cts =
412
+ CompileTimeSelector<Function::kCdfnorminv, Tin, Tout, Acc::a>::result;
413
+ Evaluator<Function::kCdfnorminv, Tin, Tout, cts.first, cts.second> EV;
414
+ return EV(a, y);
415
+ }
416
+
417
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
418
+ typename std::enable_if<ExistsAtAll<Function::kCeil, Tin, Tout, Acc::a>,
419
+ oneapi::mkl::vm::status>::type
420
+ ceil(const Tin* a, Tout* y, Acc const& acc = {}) {
421
+ constexpr auto cts =
422
+ CompileTimeSelector<Function::kCeil, Tin, Tout, Acc::a>::result;
423
+ Evaluator<Function::kCeil, Tin, Tout, cts.first, cts.second> EV;
424
+ return EV(a, y);
425
+ }
426
+
427
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
428
+ typename std::enable_if<ExistsAtAll<Function::kCis, Tin, Tout, Acc::a>,
429
+ oneapi::mkl::vm::status>::type
430
+ cis(const Tin* a, Tout* y, Acc const& acc = {}) {
431
+ constexpr auto cts =
432
+ CompileTimeSelector<Function::kCis, Tin, Tout, Acc::a>::result;
433
+ Evaluator<Function::kCis, Tin, Tout, cts.first, cts.second> EV;
434
+ return EV(a, y);
435
+ }
436
+
437
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
438
+ typename std::enable_if<ExistsAtAll<Function::kConj, Tin, Tout, Acc::a>,
439
+ oneapi::mkl::vm::status>::type
440
+ conj(const Tin* a, Tout* y, Acc const& acc = {}) {
441
+ constexpr auto cts =
442
+ CompileTimeSelector<Function::kConj, Tin, Tout, Acc::a>::result;
443
+ Evaluator<Function::kConj, Tin, Tout, cts.first, cts.second> EV;
444
+ return EV(a, y);
445
+ }
446
+
447
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
448
+ typename std::enable_if<ExistsAtAll<Function::kCopysign, Tin, Tout, Acc::a>,
449
+ oneapi::mkl::vm::status>::type
450
+ copysign(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
451
+ constexpr auto cts =
452
+ CompileTimeSelector<Function::kCopysign, Tin, Tout, Acc::a>::result;
453
+ Evaluator<Function::kCopysign, Tin, Tout, cts.first, cts.second> EV;
454
+ return EV(a, b, y);
455
+ }
456
+
457
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
458
+ typename std::enable_if<ExistsAtAll<Function::kCos, Tin, Tout, Acc::a>,
459
+ oneapi::mkl::vm::status>::type
460
+ cos(const Tin* a, Tout* y, Acc const& acc = {}) {
461
+ constexpr auto cts =
462
+ CompileTimeSelector<Function::kCos, Tin, Tout, Acc::a>::result;
463
+ Evaluator<Function::kCos, Tin, Tout, cts.first, cts.second> EV;
464
+ return EV(a, y);
465
+ }
466
+
467
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
468
+ typename std::enable_if<ExistsAtAll<Function::kCosd, Tin, Tout, Acc::a>,
469
+ oneapi::mkl::vm::status>::type
470
+ cosd(const Tin* a, Tout* y, Acc const& acc = {}) {
471
+ constexpr auto cts =
472
+ CompileTimeSelector<Function::kCosd, Tin, Tout, Acc::a>::result;
473
+ Evaluator<Function::kCosd, Tin, Tout, cts.first, cts.second> EV;
474
+ return EV(a, y);
475
+ }
476
+
477
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
478
+ typename std::enable_if<ExistsAtAll<Function::kCosh, Tin, Tout, Acc::a>,
479
+ oneapi::mkl::vm::status>::type
480
+ cosh(const Tin* a, Tout* y, Acc const& acc = {}) {
481
+ constexpr auto cts =
482
+ CompileTimeSelector<Function::kCosh, Tin, Tout, Acc::a>::result;
483
+ Evaluator<Function::kCosh, Tin, Tout, cts.first, cts.second> EV;
484
+ return EV(a, y);
485
+ }
486
+
487
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
488
+ typename std::enable_if<ExistsAtAll<Function::kCospi, Tin, Tout, Acc::a>,
489
+ oneapi::mkl::vm::status>::type
490
+ cospi(const Tin* a, Tout* y, Acc const& acc = {}) {
491
+ constexpr auto cts =
492
+ CompileTimeSelector<Function::kCospi, Tin, Tout, Acc::a>::result;
493
+ Evaluator<Function::kCospi, Tin, Tout, cts.first, cts.second> EV;
494
+ return EV(a, y);
495
+ }
496
+
497
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
498
+ typename std::enable_if<ExistsAtAll<Function::kDiv, Tin, Tout, Acc::a>,
499
+ oneapi::mkl::vm::status>::type
500
+ div(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
501
+ constexpr auto cts =
502
+ CompileTimeSelector<Function::kDiv, Tin, Tout, Acc::a>::result;
503
+ Evaluator<Function::kDiv, Tin, Tout, cts.first, cts.second> EV;
504
+ return EV(a, b, y);
505
+ }
506
+
507
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
508
+ typename std::enable_if<ExistsAtAll<Function::kErf, Tin, Tout, Acc::a>,
509
+ oneapi::mkl::vm::status>::type
510
+ erf(const Tin* a, Tout* y, Acc const& acc = {}) {
511
+ constexpr auto cts =
512
+ CompileTimeSelector<Function::kErf, Tin, Tout, Acc::a>::result;
513
+ Evaluator<Function::kErf, Tin, Tout, cts.first, cts.second> EV;
514
+ return EV(a, y);
515
+ }
516
+
517
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
518
+ typename std::enable_if<ExistsAtAll<Function::kErfc, Tin, Tout, Acc::a>,
519
+ oneapi::mkl::vm::status>::type
520
+ erfc(const Tin* a, Tout* y, Acc const& acc = {}) {
521
+ constexpr auto cts =
522
+ CompileTimeSelector<Function::kErfc, Tin, Tout, Acc::a>::result;
523
+ Evaluator<Function::kErfc, Tin, Tout, cts.first, cts.second> EV;
524
+ return EV(a, y);
525
+ }
526
+
527
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
528
+ typename std::enable_if<ExistsAtAll<Function::kErfc, Tin, Tout, Acc::a>,
529
+ oneapi::mkl::vm::status>::type
530
+ erfcx(const Tin* a, Tout* y, Acc const& acc = {}) {
531
+ constexpr auto cts =
532
+ CompileTimeSelector<Function::kErfc, Tin, Tout, Acc::a>::result;
533
+ Evaluator<Function::kErfc, Tin, Tout, cts.first, cts.second> EV;
534
+ return EV(a, y);
535
+ }
536
+
537
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
538
+ typename std::enable_if<ExistsAtAll<Function::kErfcinv, Tin, Tout, Acc::a>,
539
+ oneapi::mkl::vm::status>::type
540
+ erfcinv(const Tin* a, Tout* y, Acc const& acc = {}) {
541
+ constexpr auto cts =
542
+ CompileTimeSelector<Function::kErfcinv, Tin, Tout, Acc::a>::result;
543
+ Evaluator<Function::kErfcinv, Tin, Tout, cts.first, cts.second> EV;
544
+ return EV(a, y);
545
+ }
546
+
547
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
548
+ typename std::enable_if<ExistsAtAll<Function::kErfinv, Tin, Tout, Acc::a>,
549
+ oneapi::mkl::vm::status>::type
550
+ erfinv(const Tin* a, Tout* y, Acc const& acc = {}) {
551
+ constexpr auto cts =
552
+ CompileTimeSelector<Function::kErfinv, Tin, Tout, Acc::a>::result;
553
+ Evaluator<Function::kErfinv, Tin, Tout, cts.first, cts.second> EV;
554
+ return EV(a, y);
555
+ }
556
+
557
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
558
+ typename std::enable_if<ExistsAtAll<Function::kExp, Tin, Tout, Acc::a>,
559
+ oneapi::mkl::vm::status>::type
560
+ exp(const Tin* a, Tout* y, Acc const& acc = {}) {
561
+ constexpr auto cts =
562
+ CompileTimeSelector<Function::kExp, Tin, Tout, Acc::a>::result;
563
+ Evaluator<Function::kExp, Tin, Tout, cts.first, cts.second> EV;
564
+ return EV(a, y);
565
+ }
566
+
567
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
568
+ typename std::enable_if<ExistsAtAll<Function::kExp10, Tin, Tout, Acc::a>,
569
+ oneapi::mkl::vm::status>::type
570
+ exp10(const Tin* a, Tout* y, Acc const& acc = {}) {
571
+ constexpr auto cts =
572
+ CompileTimeSelector<Function::kExp10, Tin, Tout, Acc::a>::result;
573
+ Evaluator<Function::kExp10, Tin, Tout, cts.first, cts.second> EV;
574
+ return EV(a, y);
575
+ }
576
+
577
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
578
+ typename std::enable_if<ExistsAtAll<Function::kExp2, Tin, Tout, Acc::a>,
579
+ oneapi::mkl::vm::status>::type
580
+ exp2(const Tin* a, Tout* y, Acc const& acc = {}) {
581
+ constexpr auto cts =
582
+ CompileTimeSelector<Function::kExp2, Tin, Tout, Acc::a>::result;
583
+ Evaluator<Function::kExp2, Tin, Tout, cts.first, cts.second> EV;
584
+ return EV(a, y);
585
+ }
586
+
587
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
588
+ typename std::enable_if<ExistsAtAll<Function::kExpm1, Tin, Tout, Acc::a>,
589
+ oneapi::mkl::vm::status>::type
590
+ expm1(const Tin* a, Tout* y, Acc const& acc = {}) {
591
+ constexpr auto cts =
592
+ CompileTimeSelector<Function::kExpm1, Tin, Tout, Acc::a>::result;
593
+ Evaluator<Function::kExpm1, Tin, Tout, cts.first, cts.second> EV;
594
+ return EV(a, y);
595
+ }
596
+
597
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
598
+ typename std::enable_if<ExistsAtAll<Function::kFdim, Tin, Tout, Acc::a>,
599
+ oneapi::mkl::vm::status>::type
600
+ fdim(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
601
+ constexpr auto cts =
602
+ CompileTimeSelector<Function::kFdim, Tin, Tout, Acc::a>::result;
603
+ Evaluator<Function::kFdim, Tin, Tout, cts.first, cts.second> EV;
604
+ return EV(a, b, y);
605
+ }
606
+
607
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
608
+ typename std::enable_if<ExistsAtAll<Function::kFloor, Tin, Tout, Acc::a>,
609
+ oneapi::mkl::vm::status>::type
610
+ floor(const Tin* a, Tout* y, Acc const& acc = {}) {
611
+ constexpr auto cts =
612
+ CompileTimeSelector<Function::kFloor, Tin, Tout, Acc::a>::result;
613
+ Evaluator<Function::kFloor, Tin, Tout, cts.first, cts.second> EV;
614
+ return EV(a, y);
615
+ }
616
+
617
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
618
+ typename std::enable_if<ExistsAtAll<Function::kFmax, Tin, Tout, Acc::a>,
619
+ oneapi::mkl::vm::status>::type
620
+ fmax(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
621
+ constexpr auto cts =
622
+ CompileTimeSelector<Function::kFmax, Tin, Tout, Acc::a>::result;
623
+ Evaluator<Function::kFmax, Tin, Tout, cts.first, cts.second> EV;
624
+ return EV(a, b, y);
625
+ }
626
+
627
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
628
+ typename std::enable_if<ExistsAtAll<Function::kFmin, Tin, Tout, Acc::a>,
629
+ oneapi::mkl::vm::status>::type
630
+ fmin(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
631
+ constexpr auto cts =
632
+ CompileTimeSelector<Function::kFmin, Tin, Tout, Acc::a>::result;
633
+ Evaluator<Function::kFmin, Tin, Tout, cts.first, cts.second> EV;
634
+ return EV(a, b, y);
635
+ }
636
+
637
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
638
+ typename std::enable_if<ExistsAtAll<Function::kFmod, Tin, Tout, Acc::a>,
639
+ oneapi::mkl::vm::status>::type
640
+ fmod(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
641
+ constexpr auto cts =
642
+ CompileTimeSelector<Function::kFmod, Tin, Tout, Acc::a>::result;
643
+ Evaluator<Function::kFmod, Tin, Tout, cts.first, cts.second> EV;
644
+ return EV(a, b, y);
645
+ }
646
+
647
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
648
+ typename std::enable_if<ExistsAtAll<Function::kFrac, Tin, Tout, Acc::a>,
649
+ oneapi::mkl::vm::status>::type
650
+ frac(const Tin* a, Tout* y, Acc const& acc = {}) {
651
+ constexpr auto cts =
652
+ CompileTimeSelector<Function::kFrac, Tin, Tout, Acc::a>::result;
653
+ Evaluator<Function::kFrac, Tin, Tout, cts.first, cts.second> EV;
654
+ return EV(a, y);
655
+ }
656
+
657
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
658
+ typename std::enable_if<ExistsAtAll<Function::kHypot, Tin, Tout, Acc::a>,
659
+ oneapi::mkl::vm::status>::type
660
+ hypot(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
661
+ constexpr auto cts =
662
+ CompileTimeSelector<Function::kHypot, Tin, Tout, Acc::a>::result;
663
+ Evaluator<Function::kHypot, Tin, Tout, cts.first, cts.second> EV;
664
+ return EV(a, b, y);
665
+ }
666
+
667
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
668
+ typename std::enable_if<ExistsAtAll<Function::kInv, Tin, Tout, Acc::a>,
669
+ oneapi::mkl::vm::status>::type
670
+ inv(const Tin* a, Tout* y, Acc const& acc = {}) {
671
+ constexpr auto cts =
672
+ CompileTimeSelector<Function::kInv, Tin, Tout, Acc::a>::result;
673
+ Evaluator<Function::kInv, Tin, Tout, cts.first, cts.second> EV;
674
+ return EV(a, y);
675
+ }
676
+
677
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
678
+ typename std::enable_if<ExistsAtAll<Function::kInvcbrt, Tin, Tout, Acc::a>,
679
+ oneapi::mkl::vm::status>::type
680
+ invcbrt(const Tin* a, Tout* y, Acc const& acc = {}) {
681
+ constexpr auto cts =
682
+ CompileTimeSelector<Function::kInvcbrt, Tin, Tout, Acc::a>::result;
683
+ Evaluator<Function::kInvcbrt, Tin, Tout, cts.first, cts.second> EV;
684
+ return EV(a, y);
685
+ }
686
+
687
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
688
+ typename std::enable_if<ExistsAtAll<Function::kInvsqrt, Tin, Tout, Acc::a>,
689
+ oneapi::mkl::vm::status>::type
690
+ invsqrt(const Tin* a, Tout* y, Acc const& acc = {}) {
691
+ constexpr auto cts =
692
+ CompileTimeSelector<Function::kInvsqrt, Tin, Tout, Acc::a>::result;
693
+ Evaluator<Function::kInvsqrt, Tin, Tout, cts.first, cts.second> EV;
694
+ return EV(a, y);
695
+ }
696
+
697
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
698
+ typename std::enable_if<ExistsAtAll<Function::kLgamma, Tin, Tout, Acc::a>,
699
+ oneapi::mkl::vm::status>::type
700
+ lgamma(const Tin* a, Tout* y, Acc const& acc = {}) {
701
+ constexpr auto cts =
702
+ CompileTimeSelector<Function::kLgamma, Tin, Tout, Acc::a>::result;
703
+ Evaluator<Function::kLgamma, Tin, Tout, cts.first, cts.second> EV;
704
+ return EV(a, y);
705
+ }
706
+
707
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
708
+ typename std::enable_if<ExistsAtAll<Function::kLn, Tin, Tout, Acc::a>,
709
+ oneapi::mkl::vm::status>::type
710
+ ln(const Tin* a, Tout* y, Acc const& acc = {}) {
711
+ constexpr auto cts =
712
+ CompileTimeSelector<Function::kLn, Tin, Tout, Acc::a>::result;
713
+ Evaluator<Function::kLn, Tin, Tout, cts.first, cts.second> EV;
714
+ return EV(a, y);
715
+ }
716
+
717
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
718
+ typename std::enable_if<ExistsAtAll<Function::kLog10, Tin, Tout, Acc::a>,
719
+ oneapi::mkl::vm::status>::type
720
+ log10(const Tin* a, Tout* y, Acc const& acc = {}) {
721
+ constexpr auto cts =
722
+ CompileTimeSelector<Function::kLog10, Tin, Tout, Acc::a>::result;
723
+ Evaluator<Function::kLog10, Tin, Tout, cts.first, cts.second> EV;
724
+ return EV(a, y);
725
+ }
726
+
727
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
728
+ typename std::enable_if<ExistsAtAll<Function::kLog1p, Tin, Tout, Acc::a>,
729
+ oneapi::mkl::vm::status>::type
730
+ log1p(const Tin* a, Tout* y, Acc const& acc = {}) {
731
+ constexpr auto cts =
732
+ CompileTimeSelector<Function::kLog1p, Tin, Tout, Acc::a>::result;
733
+ Evaluator<Function::kLog1p, Tin, Tout, cts.first, cts.second> EV;
734
+ return EV(a, y);
735
+ }
736
+
737
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
738
+ typename std::enable_if<ExistsAtAll<Function::kLog2, Tin, Tout, Acc::a>,
739
+ oneapi::mkl::vm::status>::type
740
+ log2(const Tin* a, Tout* y, Acc const& acc = {}) {
741
+ constexpr auto cts =
742
+ CompileTimeSelector<Function::kLog2, Tin, Tout, Acc::a>::result;
743
+ Evaluator<Function::kLog2, Tin, Tout, cts.first, cts.second> EV;
744
+ return EV(a, y);
745
+ }
746
+
747
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
748
+ typename std::enable_if<ExistsAtAll<Function::kLogb, Tin, Tout, Acc::a>,
749
+ oneapi::mkl::vm::status>::type
750
+ logb(const Tin* a, Tout* y, Acc const& acc = {}) {
751
+ constexpr auto cts =
752
+ CompileTimeSelector<Function::kLogb, Tin, Tout, Acc::a>::result;
753
+ Evaluator<Function::kLogb, Tin, Tout, cts.first, cts.second> EV;
754
+ return EV(a, y);
755
+ }
756
+
757
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
758
+ typename std::enable_if<ExistsAtAll<Function::kMaxmag, Tin, Tout, Acc::a>,
759
+ oneapi::mkl::vm::status>::type
760
+ maxmag(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
761
+ constexpr auto cts =
762
+ CompileTimeSelector<Function::kMaxmag, Tin, Tout, Acc::a>::result;
763
+ Evaluator<Function::kMaxmag, Tin, Tout, cts.first, cts.second> EV;
764
+ return EV(a, b, y);
765
+ }
766
+
767
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
768
+ typename std::enable_if<ExistsAtAll<Function::kMinmag, Tin, Tout, Acc::a>,
769
+ oneapi::mkl::vm::status>::type
770
+ minmag(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
771
+ constexpr auto cts =
772
+ CompileTimeSelector<Function::kMinmag, Tin, Tout, Acc::a>::result;
773
+ Evaluator<Function::kMinmag, Tin, Tout, cts.first, cts.second> EV;
774
+ return EV(a, b, y);
775
+ }
776
+
777
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
778
+ typename std::enable_if<ExistsAtAll<Function::kModf, Tin, Tout, Acc::a>,
779
+ oneapi::mkl::vm::status>::type
780
+ modf(const Tin* a, Tout* y, Tout* z, Acc const& acc = {}) {
781
+ constexpr auto cts =
782
+ CompileTimeSelector<Function::kModf, Tin, Tout, Acc::a>::result;
783
+ Evaluator<Function::kModf, Tin, Tout, cts.first, cts.second> EV;
784
+ return EV(a, y, z);
785
+ }
786
+
787
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
788
+ typename std::enable_if<ExistsAtAll<Function::kMul, Tin, Tout, Acc::a>,
789
+ oneapi::mkl::vm::status>::type
790
+ mul(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
791
+ constexpr auto cts =
792
+ CompileTimeSelector<Function::kMul, Tin, Tout, Acc::a>::result;
793
+ Evaluator<Function::kMul, Tin, Tout, cts.first, cts.second> EV;
794
+ return EV(a, b, y);
795
+ }
796
+
797
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
798
+ typename std::enable_if<ExistsAtAll<Function::kMulbyconj, Tin, Tout, Acc::a>,
799
+ oneapi::mkl::vm::status>::type
800
+ mulbyconj(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
801
+ constexpr auto cts =
802
+ CompileTimeSelector<Function::kMulbyconj, Tin, Tout, Acc::a>::result;
803
+ Evaluator<Function::kMulbyconj, Tin, Tout, cts.first, cts.second> EV;
804
+ return EV(a, b, y);
805
+ }
806
+
807
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
808
+ typename std::enable_if<ExistsAtAll<Function::kNearbyint, Tin, Tout, Acc::a>,
809
+ oneapi::mkl::vm::status>::type
810
+ nearbyint(const Tin* a, Tout* y, Acc const& acc = {}) {
811
+ constexpr auto cts =
812
+ CompileTimeSelector<Function::kNearbyint, Tin, Tout, Acc::a>::result;
813
+ Evaluator<Function::kNearbyint, Tin, Tout, cts.first, cts.second> EV;
814
+ return EV(a, y);
815
+ }
816
+
817
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
818
+ typename std::enable_if<ExistsAtAll<Function::kNextafter, Tin, Tout, Acc::a>,
819
+ oneapi::mkl::vm::status>::type
820
+ nextafter(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
821
+ constexpr auto cts =
822
+ CompileTimeSelector<Function::kNextafter, Tin, Tout, Acc::a>::result;
823
+ Evaluator<Function::kNextafter, Tin, Tout, cts.first, cts.second> EV;
824
+ return EV(a, b, y);
825
+ }
826
+
827
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
828
+ typename std::enable_if<ExistsAtAll<Function::kPow, Tin, Tout, Acc::a>,
829
+ oneapi::mkl::vm::status>::type
830
+ pow(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
831
+ constexpr auto cts =
832
+ CompileTimeSelector<Function::kPow, Tin, Tout, Acc::a>::result;
833
+ Evaluator<Function::kPow, Tin, Tout, cts.first, cts.second> EV;
834
+ return EV(a, b, y);
835
+ }
836
+
837
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
838
+ typename std::enable_if<ExistsAtAll<Function::kPow2o3, Tin, Tout, Acc::a>,
839
+ oneapi::mkl::vm::status>::type
840
+ pow2o3(const Tin* a, Tout* y, Acc const& acc = {}) {
841
+ constexpr auto cts =
842
+ CompileTimeSelector<Function::kPow2o3, Tin, Tout, Acc::a>::result;
843
+ Evaluator<Function::kPow2o3, Tin, Tout, cts.first, cts.second> EV;
844
+ return EV(a, y);
845
+ }
846
+
847
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
848
+ typename std::enable_if<ExistsAtAll<Function::kPow3o2, Tin, Tout, Acc::a>,
849
+ oneapi::mkl::vm::status>::type
850
+ pow3o2(const Tin* a, Tout* y, Acc const& acc = {}) {
851
+ constexpr auto cts =
852
+ CompileTimeSelector<Function::kPow3o2, Tin, Tout, Acc::a>::result;
853
+ Evaluator<Function::kPow3o2, Tin, Tout, cts.first, cts.second> EV;
854
+ return EV(a, y);
855
+ }
856
+
857
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
858
+ typename std::enable_if<ExistsAtAll<Function::kPowr, Tin, Tout, Acc::a>,
859
+ oneapi::mkl::vm::status>::type
860
+ powr(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
861
+ constexpr auto cts =
862
+ CompileTimeSelector<Function::kPowr, Tin, Tout, Acc::a>::result;
863
+ Evaluator<Function::kPowr, Tin, Tout, cts.first, cts.second> EV;
864
+ return EV(a, b, y);
865
+ }
866
+
867
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
868
+ typename std::enable_if<ExistsAtAll<Function::kPowx, Tin, Tout, Acc::a>,
869
+ oneapi::mkl::vm::status>::type
870
+ powx(const Tin* a, const Tin b, Tout* y, Acc const& acc = {}) {
871
+ constexpr auto cts =
872
+ CompileTimeSelector<Function::kPowx, Tin, Tout, Acc::a>::result;
873
+ Evaluator<Function::kPowx, Tin, Tout, cts.first, cts.second> EV;
874
+ return EV(a, b, y);
875
+ }
876
+
877
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
878
+ typename std::enable_if<ExistsAtAll<Function::kRemainder, Tin, Tout, Acc::a>,
879
+ oneapi::mkl::vm::status>::type
880
+ remainder(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
881
+ constexpr auto cts =
882
+ CompileTimeSelector<Function::kRemainder, Tin, Tout, Acc::a>::result;
883
+ Evaluator<Function::kRemainder, Tin, Tout, cts.first, cts.second> EV;
884
+ return EV(a, b, y);
885
+ }
886
+
887
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
888
+ typename std::enable_if<ExistsAtAll<Function::kRint, Tin, Tout, Acc::a>,
889
+ oneapi::mkl::vm::status>::type
890
+ rint(const Tin* a, Tout* y, Acc const& acc = {}) {
891
+ constexpr auto cts =
892
+ CompileTimeSelector<Function::kRint, Tin, Tout, Acc::a>::result;
893
+ Evaluator<Function::kRint, Tin, Tout, cts.first, cts.second> EV;
894
+ return EV(a, y);
895
+ }
896
+
897
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
898
+ typename std::enable_if<ExistsAtAll<Function::kRound, Tin, Tout, Acc::a>,
899
+ oneapi::mkl::vm::status>::type
900
+ round(const Tin* a, Tout* y, Acc const& acc = {}) {
901
+ constexpr auto cts =
902
+ CompileTimeSelector<Function::kRound, Tin, Tout, Acc::a>::result;
903
+ Evaluator<Function::kRound, Tin, Tout, cts.first, cts.second> EV;
904
+ return EV(a, y);
905
+ }
906
+
907
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
908
+ typename std::enable_if<ExistsAtAll<Function::kSin, Tin, Tout, Acc::a>,
909
+ oneapi::mkl::vm::status>::type
910
+ sin(const Tin* a, Tout* y, Acc const& acc = {}) {
911
+ constexpr auto cts =
912
+ CompileTimeSelector<Function::kSin, Tin, Tout, Acc::a>::result;
913
+ Evaluator<Function::kSin, Tin, Tout, cts.first, cts.second> EV;
914
+ return EV(a, y);
915
+ }
916
+
917
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
918
+ typename std::enable_if<ExistsAtAll<Function::kSincos, Tin, Tout, Acc::a>,
919
+ oneapi::mkl::vm::status>::type
920
+ sincos(const Tin* a, Tout* y, Tout* z, Acc const& acc = {}) {
921
+ constexpr auto cts =
922
+ CompileTimeSelector<Function::kSincos, Tin, Tout, Acc::a>::result;
923
+ Evaluator<Function::kSincos, Tin, Tout, cts.first, cts.second> EV;
924
+ return EV(a, y, z);
925
+ }
926
+
927
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
928
+ typename std::enable_if<ExistsAtAll<Function::kSincospi, Tin, Tout, Acc::a>,
929
+ oneapi::mkl::vm::status>::type
930
+ sincospi(const Tin* a, Tout* y, Tout* z, Acc const& acc = {}) {
931
+ constexpr auto cts =
932
+ CompileTimeSelector<Function::kSincospi, Tin, Tout, Acc::a>::result;
933
+ Evaluator<Function::kSincospi, Tin, Tout, cts.first, cts.second> EV;
934
+ return EV(a, y, z);
935
+ }
936
+
937
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
938
+ typename std::enable_if<ExistsAtAll<Function::kSind, Tin, Tout, Acc::a>,
939
+ oneapi::mkl::vm::status>::type
940
+ sind(const Tin* a, Tout* y, Acc const& acc = {}) {
941
+ constexpr auto cts =
942
+ CompileTimeSelector<Function::kSind, Tin, Tout, Acc::a>::result;
943
+ Evaluator<Function::kSind, Tin, Tout, cts.first, cts.second> EV;
944
+ return EV(a, y);
945
+ }
946
+
947
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
948
+ typename std::enable_if<ExistsAtAll<Function::kSinh, Tin, Tout, Acc::a>,
949
+ oneapi::mkl::vm::status>::type
950
+ sinh(const Tin* a, Tout* y, Acc const& acc = {}) {
951
+ constexpr auto cts =
952
+ CompileTimeSelector<Function::kSinh, Tin, Tout, Acc::a>::result;
953
+ Evaluator<Function::kSinh, Tin, Tout, cts.first, cts.second> EV;
954
+ return EV(a, y);
955
+ }
956
+
957
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
958
+ typename std::enable_if<ExistsAtAll<Function::kSinpi, Tin, Tout, Acc::a>,
959
+ oneapi::mkl::vm::status>::type
960
+ sinpi(const Tin* a, Tout* y, Acc const& acc = {}) {
961
+ constexpr auto cts =
962
+ CompileTimeSelector<Function::kSinpi, Tin, Tout, Acc::a>::result;
963
+ Evaluator<Function::kSinpi, Tin, Tout, cts.first, cts.second> EV;
964
+ return EV(a, y);
965
+ }
966
+
967
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
968
+ typename std::enable_if<ExistsAtAll<Function::kSqr, Tin, Tout, Acc::a>,
969
+ oneapi::mkl::vm::status>::type
970
+ sqr(const Tin* a, Tout* y, Acc const& acc = {}) {
971
+ constexpr auto cts =
972
+ CompileTimeSelector<Function::kSqr, Tin, Tout, Acc::a>::result;
973
+ Evaluator<Function::kSqr, Tin, Tout, cts.first, cts.second> EV;
974
+ return EV(a, y);
975
+ }
976
+
977
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
978
+ typename std::enable_if<ExistsAtAll<Function::kSqrt, Tin, Tout, Acc::a>,
979
+ oneapi::mkl::vm::status>::type
980
+ sqrt(const Tin* a, Tout* y, Acc const& acc = {}) {
981
+ constexpr auto cts =
982
+ CompileTimeSelector<Function::kSqrt, Tin, Tout, Acc::a>::result;
983
+ Evaluator<Function::kSqrt, Tin, Tout, cts.first, cts.second> EV;
984
+ return EV(a, y);
985
+ }
986
+
987
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
988
+ typename std::enable_if<ExistsAtAll<Function::kSub, Tin, Tout, Acc::a>,
989
+ oneapi::mkl::vm::status>::type
990
+ sub(const Tin* a, const Tin* b, Tout* y, Acc const& acc = {}) {
991
+ constexpr auto cts =
992
+ CompileTimeSelector<Function::kSub, Tin, Tout, Acc::a>::result;
993
+ Evaluator<Function::kSub, Tin, Tout, cts.first, cts.second> EV;
994
+ return EV(a, b, y);
995
+ }
996
+
997
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
998
+ typename std::enable_if<ExistsAtAll<Function::kTan, Tin, Tout, Acc::a>,
999
+ oneapi::mkl::vm::status>::type
1000
+ tan(const Tin* a, Tout* y, Acc const& acc = {}) {
1001
+ constexpr auto cts =
1002
+ CompileTimeSelector<Function::kTan, Tin, Tout, Acc::a>::result;
1003
+ Evaluator<Function::kTan, Tin, Tout, cts.first, cts.second> EV;
1004
+ return EV(a, y);
1005
+ }
1006
+
1007
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
1008
+ typename std::enable_if<ExistsAtAll<Function::kTand, Tin, Tout, Acc::a>,
1009
+ oneapi::mkl::vm::status>::type
1010
+ tand(const Tin* a, Tout* y, Acc const& acc = {}) {
1011
+ constexpr auto cts =
1012
+ CompileTimeSelector<Function::kTand, Tin, Tout, Acc::a>::result;
1013
+ Evaluator<Function::kTand, Tin, Tout, cts.first, cts.second> EV;
1014
+ return EV(a, y);
1015
+ }
1016
+
1017
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
1018
+ typename std::enable_if<ExistsAtAll<Function::kTanh, Tin, Tout, Acc::a>,
1019
+ oneapi::mkl::vm::status>::type
1020
+ tanh(const Tin* a, Tout* y, Acc const& acc = {}) {
1021
+ constexpr auto cts =
1022
+ CompileTimeSelector<Function::kTanh, Tin, Tout, Acc::a>::result;
1023
+ Evaluator<Function::kTanh, Tin, Tout, cts.first, cts.second> EV;
1024
+ return EV(a, y);
1025
+ }
1026
+
1027
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
1028
+ typename std::enable_if<ExistsAtAll<Function::kTanpi, Tin, Tout, Acc::a>,
1029
+ oneapi::mkl::vm::status>::type
1030
+ tanpi(const Tin* a, Tout* y, Acc const& acc = {}) {
1031
+ constexpr auto cts =
1032
+ CompileTimeSelector<Function::kTanpi, Tin, Tout, Acc::a>::result;
1033
+ Evaluator<Function::kTanpi, Tin, Tout, cts.first, cts.second> EV;
1034
+ return EV(a, y);
1035
+ }
1036
+
1037
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
1038
+ typename std::enable_if<ExistsAtAll<Function::kTgamma, Tin, Tout, Acc::a>,
1039
+ oneapi::mkl::vm::status>::type
1040
+ tgamma(const Tin* a, Tout* y, Acc const& acc = {}) {
1041
+ constexpr auto cts =
1042
+ CompileTimeSelector<Function::kTgamma, Tin, Tout, Acc::a>::result;
1043
+ Evaluator<Function::kTgamma, Tin, Tout, cts.first, cts.second> EV;
1044
+ return EV(a, y);
1045
+ }
1046
+
1047
+ template <typename Tin, typename Tout, typename Acc = decltype(DefaultAccuracy)>
1048
+ typename std::enable_if<ExistsAtAll<Function::kTrunc, Tin, Tout, Acc::a>,
1049
+ oneapi::mkl::vm::status>::type
1050
+ trunc(const Tin* a, Tout* y, Acc const& acc = {}) {
1051
+ constexpr auto cts =
1052
+ CompileTimeSelector<Function::kTrunc, Tin, Tout, Acc::a>::result;
1053
+ Evaluator<Function::kTrunc, Tin, Tout, cts.first, cts.second> EV;
1054
+ return EV(a, y);
1055
+ }
1056
+
1057
+ } // namespace oneapi::mkl::vm::device::detail
1058
+
1059
+ #endif // #ifndef ONEAPI_MKL_VM_DEVICE_VM_DETAIL_DISPATCH_HPP