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,4608 @@
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_RTS_HPP
16
+ #define ONEAPI_MKL_VM_DEVICE_RTS_HPP 1
17
+
18
+ #include "oneapi/mkl/vm/device/detail/decls.hpp"
19
+
20
+ #include "oneapi/mkl/vm/device/detail/scalar.hpp"
21
+
22
+ #include "oneapi/mkl/vm/device/detail/dispatch.hpp"
23
+
24
+ namespace oneapi::mkl::vm::device::detail::rts {
25
+
26
+ static inline oneapi::mkl::vm::status
27
+ abs(const sycl::half* a, sycl::half* y,
28
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
29
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
30
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
31
+ default:
32
+ case oneapi::mkl::vm::mode::ha:
33
+ r = detail::abs(a, y, oneapi::mkl::vm::device::detail::mode::ha);
34
+ break;
35
+ case oneapi::mkl::vm::mode::la:
36
+ r = detail::abs(a, y, oneapi::mkl::vm::device::detail::mode::la);
37
+ break;
38
+ case oneapi::mkl::vm::mode::ep:
39
+ r = detail::abs(a, y, oneapi::mkl::vm::device::detail::mode::ep);
40
+ break;
41
+ } // switch
42
+ return r;
43
+ }
44
+ static inline oneapi::mkl::vm::status
45
+ abs(const float* a, float* y,
46
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
47
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
48
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
49
+ default:
50
+ case oneapi::mkl::vm::mode::ha:
51
+ r = detail::abs(a, y, oneapi::mkl::vm::device::detail::mode::ha);
52
+ break;
53
+ case oneapi::mkl::vm::mode::la:
54
+ r = detail::abs(a, y, oneapi::mkl::vm::device::detail::mode::la);
55
+ break;
56
+ case oneapi::mkl::vm::mode::ep:
57
+ r = detail::abs(a, y, oneapi::mkl::vm::device::detail::mode::ep);
58
+ break;
59
+ } // switch
60
+ return r;
61
+ }
62
+ static inline oneapi::mkl::vm::status
63
+ abs(const double* a, double* y,
64
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
65
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
66
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
67
+ default:
68
+ case oneapi::mkl::vm::mode::ha:
69
+ r = detail::abs(a, y, oneapi::mkl::vm::device::detail::mode::ha);
70
+ break;
71
+ case oneapi::mkl::vm::mode::la:
72
+ r = detail::abs(a, y, oneapi::mkl::vm::device::detail::mode::la);
73
+ break;
74
+ case oneapi::mkl::vm::mode::ep:
75
+ r = detail::abs(a, y, oneapi::mkl::vm::device::detail::mode::ep);
76
+ break;
77
+ } // switch
78
+ return r;
79
+ }
80
+ static inline oneapi::mkl::vm::status
81
+ abs(const std::complex<float>* a, float* y,
82
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
83
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
84
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
85
+ default:
86
+ case oneapi::mkl::vm::mode::ha:
87
+ r = detail::abs(a, y, oneapi::mkl::vm::device::detail::mode::ha);
88
+ break;
89
+ case oneapi::mkl::vm::mode::la:
90
+ r = detail::abs(a, y, oneapi::mkl::vm::device::detail::mode::la);
91
+ break;
92
+ case oneapi::mkl::vm::mode::ep:
93
+ r = detail::abs(a, y, oneapi::mkl::vm::device::detail::mode::ep);
94
+ break;
95
+ } // switch
96
+ return r;
97
+ }
98
+ static inline oneapi::mkl::vm::status
99
+ abs(const std::complex<double>* a, double* y,
100
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
101
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
102
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
103
+ default:
104
+ case oneapi::mkl::vm::mode::ha:
105
+ r = detail::abs(a, y, oneapi::mkl::vm::device::detail::mode::ha);
106
+ break;
107
+ case oneapi::mkl::vm::mode::la:
108
+ r = detail::abs(a, y, oneapi::mkl::vm::device::detail::mode::la);
109
+ break;
110
+ case oneapi::mkl::vm::mode::ep:
111
+ r = detail::abs(a, y, oneapi::mkl::vm::device::detail::mode::ep);
112
+ break;
113
+ } // switch
114
+ return r;
115
+ }
116
+ static inline oneapi::mkl::vm::status
117
+ acos(const sycl::half* a, sycl::half* y,
118
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
119
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
120
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
121
+ default:
122
+ case oneapi::mkl::vm::mode::ha:
123
+ r = detail::acos(a, y, oneapi::mkl::vm::device::detail::mode::ha);
124
+ break;
125
+ case oneapi::mkl::vm::mode::la:
126
+ r = detail::acos(a, y, oneapi::mkl::vm::device::detail::mode::la);
127
+ break;
128
+ case oneapi::mkl::vm::mode::ep:
129
+ r = detail::acos(a, y, oneapi::mkl::vm::device::detail::mode::ep);
130
+ break;
131
+ } // switch
132
+ return r;
133
+ }
134
+ static inline oneapi::mkl::vm::status
135
+ acos(const float* a, float* y,
136
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
137
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
138
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
139
+ default:
140
+ case oneapi::mkl::vm::mode::ha:
141
+ r = detail::acos(a, y, oneapi::mkl::vm::device::detail::mode::ha);
142
+ break;
143
+ case oneapi::mkl::vm::mode::la:
144
+ r = detail::acos(a, y, oneapi::mkl::vm::device::detail::mode::la);
145
+ break;
146
+ case oneapi::mkl::vm::mode::ep:
147
+ r = detail::acos(a, y, oneapi::mkl::vm::device::detail::mode::ep);
148
+ break;
149
+ } // switch
150
+ return r;
151
+ }
152
+ static inline oneapi::mkl::vm::status
153
+ acos(const double* a, double* y,
154
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
155
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
156
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
157
+ default:
158
+ case oneapi::mkl::vm::mode::ha:
159
+ r = detail::acos(a, y, oneapi::mkl::vm::device::detail::mode::ha);
160
+ break;
161
+ case oneapi::mkl::vm::mode::la:
162
+ r = detail::acos(a, y, oneapi::mkl::vm::device::detail::mode::la);
163
+ break;
164
+ case oneapi::mkl::vm::mode::ep:
165
+ r = detail::acos(a, y, oneapi::mkl::vm::device::detail::mode::ep);
166
+ break;
167
+ } // switch
168
+ return r;
169
+ }
170
+ static inline oneapi::mkl::vm::status
171
+ acosh(const sycl::half* a, sycl::half* y,
172
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
173
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
174
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
175
+ default:
176
+ case oneapi::mkl::vm::mode::ha:
177
+ r = detail::acosh(a, y, oneapi::mkl::vm::device::detail::mode::ha);
178
+ break;
179
+ case oneapi::mkl::vm::mode::la:
180
+ r = detail::acosh(a, y, oneapi::mkl::vm::device::detail::mode::la);
181
+ break;
182
+ case oneapi::mkl::vm::mode::ep:
183
+ r = detail::acosh(a, y, oneapi::mkl::vm::device::detail::mode::ep);
184
+ break;
185
+ } // switch
186
+ return r;
187
+ }
188
+ static inline oneapi::mkl::vm::status
189
+ acosh(const float* a, float* y,
190
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
191
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
192
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
193
+ default:
194
+ case oneapi::mkl::vm::mode::ha:
195
+ r = detail::acosh(a, y, oneapi::mkl::vm::device::detail::mode::ha);
196
+ break;
197
+ case oneapi::mkl::vm::mode::la:
198
+ r = detail::acosh(a, y, oneapi::mkl::vm::device::detail::mode::la);
199
+ break;
200
+ case oneapi::mkl::vm::mode::ep:
201
+ r = detail::acosh(a, y, oneapi::mkl::vm::device::detail::mode::ep);
202
+ break;
203
+ } // switch
204
+ return r;
205
+ }
206
+ static inline oneapi::mkl::vm::status
207
+ acosh(const double* a, double* y,
208
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
209
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
210
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
211
+ default:
212
+ case oneapi::mkl::vm::mode::ha:
213
+ r = detail::acosh(a, y, oneapi::mkl::vm::device::detail::mode::ha);
214
+ break;
215
+ case oneapi::mkl::vm::mode::la:
216
+ r = detail::acosh(a, y, oneapi::mkl::vm::device::detail::mode::la);
217
+ break;
218
+ case oneapi::mkl::vm::mode::ep:
219
+ r = detail::acosh(a, y, oneapi::mkl::vm::device::detail::mode::ep);
220
+ break;
221
+ } // switch
222
+ return r;
223
+ }
224
+ static inline oneapi::mkl::vm::status
225
+ acospi(const sycl::half* a, sycl::half* y,
226
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
227
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
228
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
229
+ default:
230
+ case oneapi::mkl::vm::mode::ha:
231
+ r = detail::acospi(a, y, oneapi::mkl::vm::device::detail::mode::ha);
232
+ break;
233
+ case oneapi::mkl::vm::mode::la:
234
+ r = detail::acospi(a, y, oneapi::mkl::vm::device::detail::mode::la);
235
+ break;
236
+ case oneapi::mkl::vm::mode::ep:
237
+ r = detail::acospi(a, y, oneapi::mkl::vm::device::detail::mode::ep);
238
+ break;
239
+ } // switch
240
+ return r;
241
+ }
242
+ static inline oneapi::mkl::vm::status
243
+ acospi(const float* a, float* y,
244
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
245
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
246
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
247
+ default:
248
+ case oneapi::mkl::vm::mode::ha:
249
+ r = detail::acospi(a, y, oneapi::mkl::vm::device::detail::mode::ha);
250
+ break;
251
+ case oneapi::mkl::vm::mode::la:
252
+ r = detail::acospi(a, y, oneapi::mkl::vm::device::detail::mode::la);
253
+ break;
254
+ case oneapi::mkl::vm::mode::ep:
255
+ r = detail::acospi(a, y, oneapi::mkl::vm::device::detail::mode::ep);
256
+ break;
257
+ } // switch
258
+ return r;
259
+ }
260
+ static inline oneapi::mkl::vm::status
261
+ acospi(const double* a, double* y,
262
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
263
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
264
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
265
+ default:
266
+ case oneapi::mkl::vm::mode::ha:
267
+ r = detail::acospi(a, y, oneapi::mkl::vm::device::detail::mode::ha);
268
+ break;
269
+ case oneapi::mkl::vm::mode::la:
270
+ r = detail::acospi(a, y, oneapi::mkl::vm::device::detail::mode::la);
271
+ break;
272
+ case oneapi::mkl::vm::mode::ep:
273
+ r = detail::acospi(a, y, oneapi::mkl::vm::device::detail::mode::ep);
274
+ break;
275
+ } // switch
276
+ return r;
277
+ }
278
+ static inline oneapi::mkl::vm::status
279
+ add(const sycl::half* a, const sycl::half* b, sycl::half* y,
280
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
281
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
282
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
283
+ default:
284
+ case oneapi::mkl::vm::mode::ha:
285
+ r = detail::add(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
286
+ break;
287
+ case oneapi::mkl::vm::mode::la:
288
+ r = detail::add(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
289
+ break;
290
+ case oneapi::mkl::vm::mode::ep:
291
+ r = detail::add(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
292
+ break;
293
+ } // switch
294
+ return r;
295
+ }
296
+ static inline oneapi::mkl::vm::status
297
+ add(const float* a, const float* b, float* y,
298
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
299
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
300
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
301
+ default:
302
+ case oneapi::mkl::vm::mode::ha:
303
+ r = detail::add(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
304
+ break;
305
+ case oneapi::mkl::vm::mode::la:
306
+ r = detail::add(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
307
+ break;
308
+ case oneapi::mkl::vm::mode::ep:
309
+ r = detail::add(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
310
+ break;
311
+ } // switch
312
+ return r;
313
+ }
314
+ static inline oneapi::mkl::vm::status
315
+ add(const double* a, const double* b, double* y,
316
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
317
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
318
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
319
+ default:
320
+ case oneapi::mkl::vm::mode::ha:
321
+ r = detail::add(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
322
+ break;
323
+ case oneapi::mkl::vm::mode::la:
324
+ r = detail::add(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
325
+ break;
326
+ case oneapi::mkl::vm::mode::ep:
327
+ r = detail::add(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
328
+ break;
329
+ } // switch
330
+ return r;
331
+ }
332
+ static inline oneapi::mkl::vm::status
333
+ add(const std::complex<float>* a, const std::complex<float>* b,
334
+ std::complex<float>* y,
335
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
336
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
337
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
338
+ default:
339
+ case oneapi::mkl::vm::mode::ha:
340
+ r = detail::add(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
341
+ break;
342
+ case oneapi::mkl::vm::mode::la:
343
+ r = detail::add(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
344
+ break;
345
+ case oneapi::mkl::vm::mode::ep:
346
+ r = detail::add(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
347
+ break;
348
+ } // switch
349
+ return r;
350
+ }
351
+ static inline oneapi::mkl::vm::status
352
+ add(const std::complex<double>* a, const std::complex<double>* b,
353
+ std::complex<double>* y,
354
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
355
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
356
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
357
+ default:
358
+ case oneapi::mkl::vm::mode::ha:
359
+ r = detail::add(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
360
+ break;
361
+ case oneapi::mkl::vm::mode::la:
362
+ r = detail::add(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
363
+ break;
364
+ case oneapi::mkl::vm::mode::ep:
365
+ r = detail::add(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
366
+ break;
367
+ } // switch
368
+ return r;
369
+ }
370
+ static inline oneapi::mkl::vm::status
371
+ arg(const std::complex<float>* a, float* y,
372
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
373
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
374
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
375
+ default:
376
+ case oneapi::mkl::vm::mode::ha:
377
+ r = detail::arg(a, y, oneapi::mkl::vm::device::detail::mode::ha);
378
+ break;
379
+ case oneapi::mkl::vm::mode::la:
380
+ r = detail::arg(a, y, oneapi::mkl::vm::device::detail::mode::la);
381
+ break;
382
+ case oneapi::mkl::vm::mode::ep:
383
+ r = detail::arg(a, y, oneapi::mkl::vm::device::detail::mode::ep);
384
+ break;
385
+ } // switch
386
+ return r;
387
+ }
388
+ static inline oneapi::mkl::vm::status
389
+ arg(const std::complex<double>* a, double* y,
390
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
391
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
392
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
393
+ default:
394
+ case oneapi::mkl::vm::mode::ha:
395
+ r = detail::arg(a, y, oneapi::mkl::vm::device::detail::mode::ha);
396
+ break;
397
+ case oneapi::mkl::vm::mode::la:
398
+ r = detail::arg(a, y, oneapi::mkl::vm::device::detail::mode::la);
399
+ break;
400
+ case oneapi::mkl::vm::mode::ep:
401
+ r = detail::arg(a, y, oneapi::mkl::vm::device::detail::mode::ep);
402
+ break;
403
+ } // switch
404
+ return r;
405
+ }
406
+ static inline oneapi::mkl::vm::status
407
+ asin(const sycl::half* a, sycl::half* y,
408
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
409
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
410
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
411
+ default:
412
+ case oneapi::mkl::vm::mode::ha:
413
+ r = detail::asin(a, y, oneapi::mkl::vm::device::detail::mode::ha);
414
+ break;
415
+ case oneapi::mkl::vm::mode::la:
416
+ r = detail::asin(a, y, oneapi::mkl::vm::device::detail::mode::la);
417
+ break;
418
+ case oneapi::mkl::vm::mode::ep:
419
+ r = detail::asin(a, y, oneapi::mkl::vm::device::detail::mode::ep);
420
+ break;
421
+ } // switch
422
+ return r;
423
+ }
424
+ static inline oneapi::mkl::vm::status
425
+ asin(const float* a, float* y,
426
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
427
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
428
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
429
+ default:
430
+ case oneapi::mkl::vm::mode::ha:
431
+ r = detail::asin(a, y, oneapi::mkl::vm::device::detail::mode::ha);
432
+ break;
433
+ case oneapi::mkl::vm::mode::la:
434
+ r = detail::asin(a, y, oneapi::mkl::vm::device::detail::mode::la);
435
+ break;
436
+ case oneapi::mkl::vm::mode::ep:
437
+ r = detail::asin(a, y, oneapi::mkl::vm::device::detail::mode::ep);
438
+ break;
439
+ } // switch
440
+ return r;
441
+ }
442
+ static inline oneapi::mkl::vm::status
443
+ asin(const double* a, double* y,
444
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
445
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
446
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
447
+ default:
448
+ case oneapi::mkl::vm::mode::ha:
449
+ r = detail::asin(a, y, oneapi::mkl::vm::device::detail::mode::ha);
450
+ break;
451
+ case oneapi::mkl::vm::mode::la:
452
+ r = detail::asin(a, y, oneapi::mkl::vm::device::detail::mode::la);
453
+ break;
454
+ case oneapi::mkl::vm::mode::ep:
455
+ r = detail::asin(a, y, oneapi::mkl::vm::device::detail::mode::ep);
456
+ break;
457
+ } // switch
458
+ return r;
459
+ }
460
+ static inline oneapi::mkl::vm::status
461
+ asinh(const sycl::half* a, sycl::half* y,
462
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
463
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
464
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
465
+ default:
466
+ case oneapi::mkl::vm::mode::ha:
467
+ r = detail::asinh(a, y, oneapi::mkl::vm::device::detail::mode::ha);
468
+ break;
469
+ case oneapi::mkl::vm::mode::la:
470
+ r = detail::asinh(a, y, oneapi::mkl::vm::device::detail::mode::la);
471
+ break;
472
+ case oneapi::mkl::vm::mode::ep:
473
+ r = detail::asinh(a, y, oneapi::mkl::vm::device::detail::mode::ep);
474
+ break;
475
+ } // switch
476
+ return r;
477
+ }
478
+ static inline oneapi::mkl::vm::status
479
+ asinh(const float* a, float* y,
480
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
481
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
482
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
483
+ default:
484
+ case oneapi::mkl::vm::mode::ha:
485
+ r = detail::asinh(a, y, oneapi::mkl::vm::device::detail::mode::ha);
486
+ break;
487
+ case oneapi::mkl::vm::mode::la:
488
+ r = detail::asinh(a, y, oneapi::mkl::vm::device::detail::mode::la);
489
+ break;
490
+ case oneapi::mkl::vm::mode::ep:
491
+ r = detail::asinh(a, y, oneapi::mkl::vm::device::detail::mode::ep);
492
+ break;
493
+ } // switch
494
+ return r;
495
+ }
496
+ static inline oneapi::mkl::vm::status
497
+ asinh(const double* a, double* y,
498
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
499
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
500
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
501
+ default:
502
+ case oneapi::mkl::vm::mode::ha:
503
+ r = detail::asinh(a, y, oneapi::mkl::vm::device::detail::mode::ha);
504
+ break;
505
+ case oneapi::mkl::vm::mode::la:
506
+ r = detail::asinh(a, y, oneapi::mkl::vm::device::detail::mode::la);
507
+ break;
508
+ case oneapi::mkl::vm::mode::ep:
509
+ r = detail::asinh(a, y, oneapi::mkl::vm::device::detail::mode::ep);
510
+ break;
511
+ } // switch
512
+ return r;
513
+ }
514
+ static inline oneapi::mkl::vm::status
515
+ asinpi(const sycl::half* a, sycl::half* y,
516
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
517
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
518
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
519
+ default:
520
+ case oneapi::mkl::vm::mode::ha:
521
+ r = detail::asinpi(a, y, oneapi::mkl::vm::device::detail::mode::ha);
522
+ break;
523
+ case oneapi::mkl::vm::mode::la:
524
+ r = detail::asinpi(a, y, oneapi::mkl::vm::device::detail::mode::la);
525
+ break;
526
+ case oneapi::mkl::vm::mode::ep:
527
+ r = detail::asinpi(a, y, oneapi::mkl::vm::device::detail::mode::ep);
528
+ break;
529
+ } // switch
530
+ return r;
531
+ }
532
+ static inline oneapi::mkl::vm::status
533
+ asinpi(const float* a, float* y,
534
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
535
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
536
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
537
+ default:
538
+ case oneapi::mkl::vm::mode::ha:
539
+ r = detail::asinpi(a, y, oneapi::mkl::vm::device::detail::mode::ha);
540
+ break;
541
+ case oneapi::mkl::vm::mode::la:
542
+ r = detail::asinpi(a, y, oneapi::mkl::vm::device::detail::mode::la);
543
+ break;
544
+ case oneapi::mkl::vm::mode::ep:
545
+ r = detail::asinpi(a, y, oneapi::mkl::vm::device::detail::mode::ep);
546
+ break;
547
+ } // switch
548
+ return r;
549
+ }
550
+ static inline oneapi::mkl::vm::status
551
+ asinpi(const double* a, double* y,
552
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
553
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
554
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
555
+ default:
556
+ case oneapi::mkl::vm::mode::ha:
557
+ r = detail::asinpi(a, y, oneapi::mkl::vm::device::detail::mode::ha);
558
+ break;
559
+ case oneapi::mkl::vm::mode::la:
560
+ r = detail::asinpi(a, y, oneapi::mkl::vm::device::detail::mode::la);
561
+ break;
562
+ case oneapi::mkl::vm::mode::ep:
563
+ r = detail::asinpi(a, y, oneapi::mkl::vm::device::detail::mode::ep);
564
+ break;
565
+ } // switch
566
+ return r;
567
+ }
568
+ static inline oneapi::mkl::vm::status
569
+ atan(const sycl::half* a, sycl::half* y,
570
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
571
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
572
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
573
+ default:
574
+ case oneapi::mkl::vm::mode::ha:
575
+ r = detail::atan(a, y, oneapi::mkl::vm::device::detail::mode::ha);
576
+ break;
577
+ case oneapi::mkl::vm::mode::la:
578
+ r = detail::atan(a, y, oneapi::mkl::vm::device::detail::mode::la);
579
+ break;
580
+ case oneapi::mkl::vm::mode::ep:
581
+ r = detail::atan(a, y, oneapi::mkl::vm::device::detail::mode::ep);
582
+ break;
583
+ } // switch
584
+ return r;
585
+ }
586
+ static inline oneapi::mkl::vm::status
587
+ atan(const float* a, float* y,
588
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
589
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
590
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
591
+ default:
592
+ case oneapi::mkl::vm::mode::ha:
593
+ r = detail::atan(a, y, oneapi::mkl::vm::device::detail::mode::ha);
594
+ break;
595
+ case oneapi::mkl::vm::mode::la:
596
+ r = detail::atan(a, y, oneapi::mkl::vm::device::detail::mode::la);
597
+ break;
598
+ case oneapi::mkl::vm::mode::ep:
599
+ r = detail::atan(a, y, oneapi::mkl::vm::device::detail::mode::ep);
600
+ break;
601
+ } // switch
602
+ return r;
603
+ }
604
+ static inline oneapi::mkl::vm::status
605
+ atan(const double* a, double* y,
606
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
607
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
608
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
609
+ default:
610
+ case oneapi::mkl::vm::mode::ha:
611
+ r = detail::atan(a, y, oneapi::mkl::vm::device::detail::mode::ha);
612
+ break;
613
+ case oneapi::mkl::vm::mode::la:
614
+ r = detail::atan(a, y, oneapi::mkl::vm::device::detail::mode::la);
615
+ break;
616
+ case oneapi::mkl::vm::mode::ep:
617
+ r = detail::atan(a, y, oneapi::mkl::vm::device::detail::mode::ep);
618
+ break;
619
+ } // switch
620
+ return r;
621
+ }
622
+ static inline oneapi::mkl::vm::status
623
+ atan2(const sycl::half* a, const sycl::half* b, sycl::half* y,
624
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
625
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
626
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
627
+ default:
628
+ case oneapi::mkl::vm::mode::ha:
629
+ r = detail::atan2(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
630
+ break;
631
+ case oneapi::mkl::vm::mode::la:
632
+ r = detail::atan2(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
633
+ break;
634
+ case oneapi::mkl::vm::mode::ep:
635
+ r = detail::atan2(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
636
+ break;
637
+ } // switch
638
+ return r;
639
+ }
640
+ static inline oneapi::mkl::vm::status
641
+ atan2(const float* a, const float* b, float* y,
642
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
643
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
644
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
645
+ default:
646
+ case oneapi::mkl::vm::mode::ha:
647
+ r = detail::atan2(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
648
+ break;
649
+ case oneapi::mkl::vm::mode::la:
650
+ r = detail::atan2(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
651
+ break;
652
+ case oneapi::mkl::vm::mode::ep:
653
+ r = detail::atan2(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
654
+ break;
655
+ } // switch
656
+ return r;
657
+ }
658
+ static inline oneapi::mkl::vm::status
659
+ atan2(const double* a, const double* b, double* y,
660
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
661
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
662
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
663
+ default:
664
+ case oneapi::mkl::vm::mode::ha:
665
+ r = detail::atan2(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
666
+ break;
667
+ case oneapi::mkl::vm::mode::la:
668
+ r = detail::atan2(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
669
+ break;
670
+ case oneapi::mkl::vm::mode::ep:
671
+ r = detail::atan2(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
672
+ break;
673
+ } // switch
674
+ return r;
675
+ }
676
+ static inline oneapi::mkl::vm::status
677
+ atan2pi(const sycl::half* a, const sycl::half* b, sycl::half* y,
678
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
679
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
680
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
681
+ default:
682
+ case oneapi::mkl::vm::mode::ha:
683
+ r = detail::atan2pi(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
684
+ break;
685
+ case oneapi::mkl::vm::mode::la:
686
+ r = detail::atan2pi(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
687
+ break;
688
+ case oneapi::mkl::vm::mode::ep:
689
+ r = detail::atan2pi(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
690
+ break;
691
+ } // switch
692
+ return r;
693
+ }
694
+ static inline oneapi::mkl::vm::status
695
+ atan2pi(const float* a, const float* b, float* y,
696
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
697
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
698
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
699
+ default:
700
+ case oneapi::mkl::vm::mode::ha:
701
+ r = detail::atan2pi(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
702
+ break;
703
+ case oneapi::mkl::vm::mode::la:
704
+ r = detail::atan2pi(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
705
+ break;
706
+ case oneapi::mkl::vm::mode::ep:
707
+ r = detail::atan2pi(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
708
+ break;
709
+ } // switch
710
+ return r;
711
+ }
712
+ static inline oneapi::mkl::vm::status
713
+ atan2pi(const double* a, const double* b, double* y,
714
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
715
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
716
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
717
+ default:
718
+ case oneapi::mkl::vm::mode::ha:
719
+ r = detail::atan2pi(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
720
+ break;
721
+ case oneapi::mkl::vm::mode::la:
722
+ r = detail::atan2pi(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
723
+ break;
724
+ case oneapi::mkl::vm::mode::ep:
725
+ r = detail::atan2pi(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
726
+ break;
727
+ } // switch
728
+ return r;
729
+ }
730
+ static inline oneapi::mkl::vm::status
731
+ atanh(const sycl::half* a, sycl::half* y,
732
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
733
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
734
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
735
+ default:
736
+ case oneapi::mkl::vm::mode::ha:
737
+ r = detail::atanh(a, y, oneapi::mkl::vm::device::detail::mode::ha);
738
+ break;
739
+ case oneapi::mkl::vm::mode::la:
740
+ r = detail::atanh(a, y, oneapi::mkl::vm::device::detail::mode::la);
741
+ break;
742
+ case oneapi::mkl::vm::mode::ep:
743
+ r = detail::atanh(a, y, oneapi::mkl::vm::device::detail::mode::ep);
744
+ break;
745
+ } // switch
746
+ return r;
747
+ }
748
+ static inline oneapi::mkl::vm::status
749
+ atanh(const float* a, float* y,
750
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
751
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
752
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
753
+ default:
754
+ case oneapi::mkl::vm::mode::ha:
755
+ r = detail::atanh(a, y, oneapi::mkl::vm::device::detail::mode::ha);
756
+ break;
757
+ case oneapi::mkl::vm::mode::la:
758
+ r = detail::atanh(a, y, oneapi::mkl::vm::device::detail::mode::la);
759
+ break;
760
+ case oneapi::mkl::vm::mode::ep:
761
+ r = detail::atanh(a, y, oneapi::mkl::vm::device::detail::mode::ep);
762
+ break;
763
+ } // switch
764
+ return r;
765
+ }
766
+ static inline oneapi::mkl::vm::status
767
+ atanh(const double* a, double* y,
768
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
769
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
770
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
771
+ default:
772
+ case oneapi::mkl::vm::mode::ha:
773
+ r = detail::atanh(a, y, oneapi::mkl::vm::device::detail::mode::ha);
774
+ break;
775
+ case oneapi::mkl::vm::mode::la:
776
+ r = detail::atanh(a, y, oneapi::mkl::vm::device::detail::mode::la);
777
+ break;
778
+ case oneapi::mkl::vm::mode::ep:
779
+ r = detail::atanh(a, y, oneapi::mkl::vm::device::detail::mode::ep);
780
+ break;
781
+ } // switch
782
+ return r;
783
+ }
784
+ static inline oneapi::mkl::vm::status
785
+ atanpi(const sycl::half* a, sycl::half* y,
786
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
787
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
788
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
789
+ default:
790
+ case oneapi::mkl::vm::mode::ha:
791
+ r = detail::atanpi(a, y, oneapi::mkl::vm::device::detail::mode::ha);
792
+ break;
793
+ case oneapi::mkl::vm::mode::la:
794
+ r = detail::atanpi(a, y, oneapi::mkl::vm::device::detail::mode::la);
795
+ break;
796
+ case oneapi::mkl::vm::mode::ep:
797
+ r = detail::atanpi(a, y, oneapi::mkl::vm::device::detail::mode::ep);
798
+ break;
799
+ } // switch
800
+ return r;
801
+ }
802
+ static inline oneapi::mkl::vm::status
803
+ atanpi(const float* a, float* y,
804
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
805
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
806
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
807
+ default:
808
+ case oneapi::mkl::vm::mode::ha:
809
+ r = detail::atanpi(a, y, oneapi::mkl::vm::device::detail::mode::ha);
810
+ break;
811
+ case oneapi::mkl::vm::mode::la:
812
+ r = detail::atanpi(a, y, oneapi::mkl::vm::device::detail::mode::la);
813
+ break;
814
+ case oneapi::mkl::vm::mode::ep:
815
+ r = detail::atanpi(a, y, oneapi::mkl::vm::device::detail::mode::ep);
816
+ break;
817
+ } // switch
818
+ return r;
819
+ }
820
+ static inline oneapi::mkl::vm::status
821
+ atanpi(const double* a, double* y,
822
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
823
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
824
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
825
+ default:
826
+ case oneapi::mkl::vm::mode::ha:
827
+ r = detail::atanpi(a, y, oneapi::mkl::vm::device::detail::mode::ha);
828
+ break;
829
+ case oneapi::mkl::vm::mode::la:
830
+ r = detail::atanpi(a, y, oneapi::mkl::vm::device::detail::mode::la);
831
+ break;
832
+ case oneapi::mkl::vm::mode::ep:
833
+ r = detail::atanpi(a, y, oneapi::mkl::vm::device::detail::mode::ep);
834
+ break;
835
+ } // switch
836
+ return r;
837
+ }
838
+ static inline oneapi::mkl::vm::status
839
+ cbrt(const sycl::half* a, sycl::half* y,
840
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
841
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
842
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
843
+ default:
844
+ case oneapi::mkl::vm::mode::ha:
845
+ r = detail::cbrt(a, y, oneapi::mkl::vm::device::detail::mode::ha);
846
+ break;
847
+ case oneapi::mkl::vm::mode::la:
848
+ r = detail::cbrt(a, y, oneapi::mkl::vm::device::detail::mode::la);
849
+ break;
850
+ case oneapi::mkl::vm::mode::ep:
851
+ r = detail::cbrt(a, y, oneapi::mkl::vm::device::detail::mode::ep);
852
+ break;
853
+ } // switch
854
+ return r;
855
+ }
856
+ static inline oneapi::mkl::vm::status
857
+ cbrt(const float* a, float* y,
858
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
859
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
860
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
861
+ default:
862
+ case oneapi::mkl::vm::mode::ha:
863
+ r = detail::cbrt(a, y, oneapi::mkl::vm::device::detail::mode::ha);
864
+ break;
865
+ case oneapi::mkl::vm::mode::la:
866
+ r = detail::cbrt(a, y, oneapi::mkl::vm::device::detail::mode::la);
867
+ break;
868
+ case oneapi::mkl::vm::mode::ep:
869
+ r = detail::cbrt(a, y, oneapi::mkl::vm::device::detail::mode::ep);
870
+ break;
871
+ } // switch
872
+ return r;
873
+ }
874
+ static inline oneapi::mkl::vm::status
875
+ cbrt(const double* a, double* y,
876
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
877
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
878
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
879
+ default:
880
+ case oneapi::mkl::vm::mode::ha:
881
+ r = detail::cbrt(a, y, oneapi::mkl::vm::device::detail::mode::ha);
882
+ break;
883
+ case oneapi::mkl::vm::mode::la:
884
+ r = detail::cbrt(a, y, oneapi::mkl::vm::device::detail::mode::la);
885
+ break;
886
+ case oneapi::mkl::vm::mode::ep:
887
+ r = detail::cbrt(a, y, oneapi::mkl::vm::device::detail::mode::ep);
888
+ break;
889
+ } // switch
890
+ return r;
891
+ }
892
+ static inline oneapi::mkl::vm::status
893
+ cdfnorm(const sycl::half* a, sycl::half* y,
894
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
895
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
896
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
897
+ default:
898
+ case oneapi::mkl::vm::mode::ha:
899
+ r = detail::cdfnorm(a, y, oneapi::mkl::vm::device::detail::mode::ha);
900
+ break;
901
+ case oneapi::mkl::vm::mode::la:
902
+ r = detail::cdfnorm(a, y, oneapi::mkl::vm::device::detail::mode::la);
903
+ break;
904
+ case oneapi::mkl::vm::mode::ep:
905
+ r = detail::cdfnorm(a, y, oneapi::mkl::vm::device::detail::mode::ep);
906
+ break;
907
+ } // switch
908
+ return r;
909
+ }
910
+ static inline oneapi::mkl::vm::status
911
+ cdfnorm(const float* a, float* y,
912
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
913
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
914
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
915
+ default:
916
+ case oneapi::mkl::vm::mode::ha:
917
+ r = detail::cdfnorm(a, y, oneapi::mkl::vm::device::detail::mode::ha);
918
+ break;
919
+ case oneapi::mkl::vm::mode::la:
920
+ r = detail::cdfnorm(a, y, oneapi::mkl::vm::device::detail::mode::la);
921
+ break;
922
+ case oneapi::mkl::vm::mode::ep:
923
+ r = detail::cdfnorm(a, y, oneapi::mkl::vm::device::detail::mode::ep);
924
+ break;
925
+ } // switch
926
+ return r;
927
+ }
928
+ static inline oneapi::mkl::vm::status
929
+ cdfnorm(const double* a, double* y,
930
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
931
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
932
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
933
+ default:
934
+ case oneapi::mkl::vm::mode::ha:
935
+ r = detail::cdfnorm(a, y, oneapi::mkl::vm::device::detail::mode::ha);
936
+ break;
937
+ case oneapi::mkl::vm::mode::la:
938
+ r = detail::cdfnorm(a, y, oneapi::mkl::vm::device::detail::mode::la);
939
+ break;
940
+ case oneapi::mkl::vm::mode::ep:
941
+ r = detail::cdfnorm(a, y, oneapi::mkl::vm::device::detail::mode::ep);
942
+ break;
943
+ } // switch
944
+ return r;
945
+ }
946
+ static inline oneapi::mkl::vm::status
947
+ cdfnorminv(const sycl::half* a, sycl::half* y,
948
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
949
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
950
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
951
+ default:
952
+ case oneapi::mkl::vm::mode::ha:
953
+ r = detail::cdfnorminv(a, y, oneapi::mkl::vm::device::detail::mode::ha);
954
+ break;
955
+ case oneapi::mkl::vm::mode::la:
956
+ r = detail::cdfnorminv(a, y, oneapi::mkl::vm::device::detail::mode::la);
957
+ break;
958
+ case oneapi::mkl::vm::mode::ep:
959
+ r = detail::cdfnorminv(a, y, oneapi::mkl::vm::device::detail::mode::ep);
960
+ break;
961
+ } // switch
962
+ return r;
963
+ }
964
+ static inline oneapi::mkl::vm::status
965
+ cdfnorminv(const float* a, float* y,
966
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
967
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
968
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
969
+ default:
970
+ case oneapi::mkl::vm::mode::ha:
971
+ r = detail::cdfnorminv(a, y, oneapi::mkl::vm::device::detail::mode::ha);
972
+ break;
973
+ case oneapi::mkl::vm::mode::la:
974
+ r = detail::cdfnorminv(a, y, oneapi::mkl::vm::device::detail::mode::la);
975
+ break;
976
+ case oneapi::mkl::vm::mode::ep:
977
+ r = detail::cdfnorminv(a, y, oneapi::mkl::vm::device::detail::mode::ep);
978
+ break;
979
+ } // switch
980
+ return r;
981
+ }
982
+ static inline oneapi::mkl::vm::status
983
+ cdfnorminv(const double* a, double* y,
984
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
985
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
986
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
987
+ default:
988
+ case oneapi::mkl::vm::mode::ha:
989
+ r = detail::cdfnorminv(a, y, oneapi::mkl::vm::device::detail::mode::ha);
990
+ break;
991
+ case oneapi::mkl::vm::mode::la:
992
+ r = detail::cdfnorminv(a, y, oneapi::mkl::vm::device::detail::mode::la);
993
+ break;
994
+ case oneapi::mkl::vm::mode::ep:
995
+ r = detail::cdfnorminv(a, y, oneapi::mkl::vm::device::detail::mode::ep);
996
+ break;
997
+ } // switch
998
+ return r;
999
+ }
1000
+ static inline oneapi::mkl::vm::status
1001
+ ceil(const sycl::half* a, sycl::half* y,
1002
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1003
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1004
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1005
+ default:
1006
+ case oneapi::mkl::vm::mode::ha:
1007
+ r = detail::ceil(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1008
+ break;
1009
+ case oneapi::mkl::vm::mode::la:
1010
+ r = detail::ceil(a, y, oneapi::mkl::vm::device::detail::mode::la);
1011
+ break;
1012
+ case oneapi::mkl::vm::mode::ep:
1013
+ r = detail::ceil(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1014
+ break;
1015
+ } // switch
1016
+ return r;
1017
+ }
1018
+ static inline oneapi::mkl::vm::status
1019
+ ceil(const float* a, float* y,
1020
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1021
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1022
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1023
+ default:
1024
+ case oneapi::mkl::vm::mode::ha:
1025
+ r = detail::ceil(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1026
+ break;
1027
+ case oneapi::mkl::vm::mode::la:
1028
+ r = detail::ceil(a, y, oneapi::mkl::vm::device::detail::mode::la);
1029
+ break;
1030
+ case oneapi::mkl::vm::mode::ep:
1031
+ r = detail::ceil(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1032
+ break;
1033
+ } // switch
1034
+ return r;
1035
+ }
1036
+ static inline oneapi::mkl::vm::status
1037
+ ceil(const double* a, double* y,
1038
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1039
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1040
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1041
+ default:
1042
+ case oneapi::mkl::vm::mode::ha:
1043
+ r = detail::ceil(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1044
+ break;
1045
+ case oneapi::mkl::vm::mode::la:
1046
+ r = detail::ceil(a, y, oneapi::mkl::vm::device::detail::mode::la);
1047
+ break;
1048
+ case oneapi::mkl::vm::mode::ep:
1049
+ r = detail::ceil(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1050
+ break;
1051
+ } // switch
1052
+ return r;
1053
+ }
1054
+ static inline oneapi::mkl::vm::status
1055
+ cis(const float* a, std::complex<float>* y,
1056
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1057
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1058
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1059
+ default:
1060
+ case oneapi::mkl::vm::mode::ha:
1061
+ r = detail::cis(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1062
+ break;
1063
+ case oneapi::mkl::vm::mode::la:
1064
+ r = detail::cis(a, y, oneapi::mkl::vm::device::detail::mode::la);
1065
+ break;
1066
+ case oneapi::mkl::vm::mode::ep:
1067
+ r = detail::cis(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1068
+ break;
1069
+ } // switch
1070
+ return r;
1071
+ }
1072
+ static inline oneapi::mkl::vm::status
1073
+ cis(const double* a, std::complex<double>* y,
1074
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1075
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1076
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1077
+ default:
1078
+ case oneapi::mkl::vm::mode::ha:
1079
+ r = detail::cis(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1080
+ break;
1081
+ case oneapi::mkl::vm::mode::la:
1082
+ r = detail::cis(a, y, oneapi::mkl::vm::device::detail::mode::la);
1083
+ break;
1084
+ case oneapi::mkl::vm::mode::ep:
1085
+ r = detail::cis(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1086
+ break;
1087
+ } // switch
1088
+ return r;
1089
+ }
1090
+ static inline oneapi::mkl::vm::status
1091
+ conj(const std::complex<float>* a, std::complex<float>* y,
1092
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1093
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1094
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1095
+ default:
1096
+ case oneapi::mkl::vm::mode::ha:
1097
+ r = detail::conj(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1098
+ break;
1099
+ case oneapi::mkl::vm::mode::la:
1100
+ r = detail::conj(a, y, oneapi::mkl::vm::device::detail::mode::la);
1101
+ break;
1102
+ case oneapi::mkl::vm::mode::ep:
1103
+ r = detail::conj(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1104
+ break;
1105
+ } // switch
1106
+ return r;
1107
+ }
1108
+ static inline oneapi::mkl::vm::status
1109
+ conj(const std::complex<double>* a, std::complex<double>* y,
1110
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1111
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1112
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1113
+ default:
1114
+ case oneapi::mkl::vm::mode::ha:
1115
+ r = detail::conj(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1116
+ break;
1117
+ case oneapi::mkl::vm::mode::la:
1118
+ r = detail::conj(a, y, oneapi::mkl::vm::device::detail::mode::la);
1119
+ break;
1120
+ case oneapi::mkl::vm::mode::ep:
1121
+ r = detail::conj(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1122
+ break;
1123
+ } // switch
1124
+ return r;
1125
+ }
1126
+ static inline oneapi::mkl::vm::status
1127
+ copysign(const sycl::half* a, const sycl::half* b, sycl::half* y,
1128
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1129
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1130
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1131
+ default:
1132
+ case oneapi::mkl::vm::mode::ha:
1133
+ r = detail::copysign(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
1134
+ break;
1135
+ case oneapi::mkl::vm::mode::la:
1136
+ r = detail::copysign(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
1137
+ break;
1138
+ case oneapi::mkl::vm::mode::ep:
1139
+ r = detail::copysign(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
1140
+ break;
1141
+ } // switch
1142
+ return r;
1143
+ }
1144
+ static inline oneapi::mkl::vm::status
1145
+ copysign(const float* a, const float* b, float* y,
1146
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1147
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1148
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1149
+ default:
1150
+ case oneapi::mkl::vm::mode::ha:
1151
+ r = detail::copysign(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
1152
+ break;
1153
+ case oneapi::mkl::vm::mode::la:
1154
+ r = detail::copysign(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
1155
+ break;
1156
+ case oneapi::mkl::vm::mode::ep:
1157
+ r = detail::copysign(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
1158
+ break;
1159
+ } // switch
1160
+ return r;
1161
+ }
1162
+ static inline oneapi::mkl::vm::status
1163
+ copysign(const double* a, const double* b, double* y,
1164
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1165
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1166
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1167
+ default:
1168
+ case oneapi::mkl::vm::mode::ha:
1169
+ r = detail::copysign(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
1170
+ break;
1171
+ case oneapi::mkl::vm::mode::la:
1172
+ r = detail::copysign(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
1173
+ break;
1174
+ case oneapi::mkl::vm::mode::ep:
1175
+ r = detail::copysign(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
1176
+ break;
1177
+ } // switch
1178
+ return r;
1179
+ }
1180
+ static inline oneapi::mkl::vm::status
1181
+ cos(const sycl::half* a, sycl::half* y,
1182
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1183
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1184
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1185
+ default:
1186
+ case oneapi::mkl::vm::mode::ha:
1187
+ r = detail::cos(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1188
+ break;
1189
+ case oneapi::mkl::vm::mode::la:
1190
+ r = detail::cos(a, y, oneapi::mkl::vm::device::detail::mode::la);
1191
+ break;
1192
+ case oneapi::mkl::vm::mode::ep:
1193
+ r = detail::cos(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1194
+ break;
1195
+ } // switch
1196
+ return r;
1197
+ }
1198
+ static inline oneapi::mkl::vm::status
1199
+ cos(const float* a, float* y,
1200
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1201
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1202
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1203
+ default:
1204
+ case oneapi::mkl::vm::mode::ha:
1205
+ r = detail::cos(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1206
+ break;
1207
+ case oneapi::mkl::vm::mode::la:
1208
+ r = detail::cos(a, y, oneapi::mkl::vm::device::detail::mode::la);
1209
+ break;
1210
+ case oneapi::mkl::vm::mode::ep:
1211
+ r = detail::cos(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1212
+ break;
1213
+ } // switch
1214
+ return r;
1215
+ }
1216
+ static inline oneapi::mkl::vm::status
1217
+ cos(const double* a, double* y,
1218
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1219
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1220
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1221
+ default:
1222
+ case oneapi::mkl::vm::mode::ha:
1223
+ r = detail::cos(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1224
+ break;
1225
+ case oneapi::mkl::vm::mode::la:
1226
+ r = detail::cos(a, y, oneapi::mkl::vm::device::detail::mode::la);
1227
+ break;
1228
+ case oneapi::mkl::vm::mode::ep:
1229
+ r = detail::cos(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1230
+ break;
1231
+ } // switch
1232
+ return r;
1233
+ }
1234
+ static inline oneapi::mkl::vm::status
1235
+ cosd(const sycl::half* a, sycl::half* y,
1236
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1237
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1238
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1239
+ default:
1240
+ case oneapi::mkl::vm::mode::ha:
1241
+ r = detail::cosd(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1242
+ break;
1243
+ case oneapi::mkl::vm::mode::la:
1244
+ r = detail::cosd(a, y, oneapi::mkl::vm::device::detail::mode::la);
1245
+ break;
1246
+ case oneapi::mkl::vm::mode::ep:
1247
+ r = detail::cosd(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1248
+ break;
1249
+ } // switch
1250
+ return r;
1251
+ }
1252
+ static inline oneapi::mkl::vm::status
1253
+ cosd(const float* a, float* y,
1254
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1255
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1256
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1257
+ default:
1258
+ case oneapi::mkl::vm::mode::ha:
1259
+ r = detail::cosd(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1260
+ break;
1261
+ case oneapi::mkl::vm::mode::la:
1262
+ r = detail::cosd(a, y, oneapi::mkl::vm::device::detail::mode::la);
1263
+ break;
1264
+ case oneapi::mkl::vm::mode::ep:
1265
+ r = detail::cosd(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1266
+ break;
1267
+ } // switch
1268
+ return r;
1269
+ }
1270
+ static inline oneapi::mkl::vm::status
1271
+ cosd(const double* a, double* y,
1272
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1273
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1274
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1275
+ default:
1276
+ case oneapi::mkl::vm::mode::ha:
1277
+ r = detail::cosd(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1278
+ break;
1279
+ case oneapi::mkl::vm::mode::la:
1280
+ r = detail::cosd(a, y, oneapi::mkl::vm::device::detail::mode::la);
1281
+ break;
1282
+ case oneapi::mkl::vm::mode::ep:
1283
+ r = detail::cosd(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1284
+ break;
1285
+ } // switch
1286
+ return r;
1287
+ }
1288
+ static inline oneapi::mkl::vm::status
1289
+ cosh(const sycl::half* a, sycl::half* y,
1290
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1291
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1292
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1293
+ default:
1294
+ case oneapi::mkl::vm::mode::ha:
1295
+ r = detail::cosh(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1296
+ break;
1297
+ case oneapi::mkl::vm::mode::la:
1298
+ r = detail::cosh(a, y, oneapi::mkl::vm::device::detail::mode::la);
1299
+ break;
1300
+ case oneapi::mkl::vm::mode::ep:
1301
+ r = detail::cosh(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1302
+ break;
1303
+ } // switch
1304
+ return r;
1305
+ }
1306
+ static inline oneapi::mkl::vm::status
1307
+ cosh(const float* a, float* y,
1308
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1309
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1310
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1311
+ default:
1312
+ case oneapi::mkl::vm::mode::ha:
1313
+ r = detail::cosh(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1314
+ break;
1315
+ case oneapi::mkl::vm::mode::la:
1316
+ r = detail::cosh(a, y, oneapi::mkl::vm::device::detail::mode::la);
1317
+ break;
1318
+ case oneapi::mkl::vm::mode::ep:
1319
+ r = detail::cosh(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1320
+ break;
1321
+ } // switch
1322
+ return r;
1323
+ }
1324
+ static inline oneapi::mkl::vm::status
1325
+ cosh(const double* a, double* y,
1326
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1327
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1328
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1329
+ default:
1330
+ case oneapi::mkl::vm::mode::ha:
1331
+ r = detail::cosh(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1332
+ break;
1333
+ case oneapi::mkl::vm::mode::la:
1334
+ r = detail::cosh(a, y, oneapi::mkl::vm::device::detail::mode::la);
1335
+ break;
1336
+ case oneapi::mkl::vm::mode::ep:
1337
+ r = detail::cosh(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1338
+ break;
1339
+ } // switch
1340
+ return r;
1341
+ }
1342
+ static inline oneapi::mkl::vm::status
1343
+ cospi(const sycl::half* a, sycl::half* y,
1344
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1345
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1346
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1347
+ default:
1348
+ case oneapi::mkl::vm::mode::ha:
1349
+ r = detail::cospi(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1350
+ break;
1351
+ case oneapi::mkl::vm::mode::la:
1352
+ r = detail::cospi(a, y, oneapi::mkl::vm::device::detail::mode::la);
1353
+ break;
1354
+ case oneapi::mkl::vm::mode::ep:
1355
+ r = detail::cospi(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1356
+ break;
1357
+ } // switch
1358
+ return r;
1359
+ }
1360
+ static inline oneapi::mkl::vm::status
1361
+ cospi(const float* a, float* y,
1362
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1363
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1364
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1365
+ default:
1366
+ case oneapi::mkl::vm::mode::ha:
1367
+ r = detail::cospi(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1368
+ break;
1369
+ case oneapi::mkl::vm::mode::la:
1370
+ r = detail::cospi(a, y, oneapi::mkl::vm::device::detail::mode::la);
1371
+ break;
1372
+ case oneapi::mkl::vm::mode::ep:
1373
+ r = detail::cospi(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1374
+ break;
1375
+ } // switch
1376
+ return r;
1377
+ }
1378
+ static inline oneapi::mkl::vm::status
1379
+ cospi(const double* a, double* y,
1380
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1381
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1382
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1383
+ default:
1384
+ case oneapi::mkl::vm::mode::ha:
1385
+ r = detail::cospi(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1386
+ break;
1387
+ case oneapi::mkl::vm::mode::la:
1388
+ r = detail::cospi(a, y, oneapi::mkl::vm::device::detail::mode::la);
1389
+ break;
1390
+ case oneapi::mkl::vm::mode::ep:
1391
+ r = detail::cospi(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1392
+ break;
1393
+ } // switch
1394
+ return r;
1395
+ }
1396
+ static inline oneapi::mkl::vm::status
1397
+ div(const sycl::half* a, const sycl::half* b, sycl::half* y,
1398
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1399
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1400
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1401
+ default:
1402
+ case oneapi::mkl::vm::mode::ha:
1403
+ r = detail::div(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
1404
+ break;
1405
+ case oneapi::mkl::vm::mode::la:
1406
+ r = detail::div(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
1407
+ break;
1408
+ case oneapi::mkl::vm::mode::ep:
1409
+ r = detail::div(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
1410
+ break;
1411
+ } // switch
1412
+ return r;
1413
+ }
1414
+ static inline oneapi::mkl::vm::status
1415
+ div(const float* a, const float* b, float* y,
1416
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1417
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1418
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1419
+ default:
1420
+ case oneapi::mkl::vm::mode::ha:
1421
+ r = detail::div(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
1422
+ break;
1423
+ case oneapi::mkl::vm::mode::la:
1424
+ r = detail::div(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
1425
+ break;
1426
+ case oneapi::mkl::vm::mode::ep:
1427
+ r = detail::div(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
1428
+ break;
1429
+ } // switch
1430
+ return r;
1431
+ }
1432
+ static inline oneapi::mkl::vm::status
1433
+ div(const double* a, const double* b, double* y,
1434
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1435
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1436
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1437
+ default:
1438
+ case oneapi::mkl::vm::mode::ha:
1439
+ r = detail::div(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
1440
+ break;
1441
+ case oneapi::mkl::vm::mode::la:
1442
+ r = detail::div(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
1443
+ break;
1444
+ case oneapi::mkl::vm::mode::ep:
1445
+ r = detail::div(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
1446
+ break;
1447
+ } // switch
1448
+ return r;
1449
+ }
1450
+ static inline oneapi::mkl::vm::status
1451
+ div(const std::complex<float>* a, const std::complex<float>* b,
1452
+ std::complex<float>* y,
1453
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1454
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1455
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1456
+ default:
1457
+ case oneapi::mkl::vm::mode::ha:
1458
+ r = detail::div(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
1459
+ break;
1460
+ case oneapi::mkl::vm::mode::la:
1461
+ r = detail::div(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
1462
+ break;
1463
+ case oneapi::mkl::vm::mode::ep:
1464
+ r = detail::div(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
1465
+ break;
1466
+ } // switch
1467
+ return r;
1468
+ }
1469
+ static inline oneapi::mkl::vm::status
1470
+ div(const std::complex<double>* a, const std::complex<double>* b,
1471
+ std::complex<double>* y,
1472
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1473
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1474
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1475
+ default:
1476
+ case oneapi::mkl::vm::mode::ha:
1477
+ r = detail::div(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
1478
+ break;
1479
+ case oneapi::mkl::vm::mode::la:
1480
+ r = detail::div(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
1481
+ break;
1482
+ case oneapi::mkl::vm::mode::ep:
1483
+ r = detail::div(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
1484
+ break;
1485
+ } // switch
1486
+ return r;
1487
+ }
1488
+ static inline oneapi::mkl::vm::status
1489
+ erf(const sycl::half* a, sycl::half* y,
1490
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1491
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1492
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1493
+ default:
1494
+ case oneapi::mkl::vm::mode::ha:
1495
+ r = detail::erf(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1496
+ break;
1497
+ case oneapi::mkl::vm::mode::la:
1498
+ r = detail::erf(a, y, oneapi::mkl::vm::device::detail::mode::la);
1499
+ break;
1500
+ case oneapi::mkl::vm::mode::ep:
1501
+ r = detail::erf(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1502
+ break;
1503
+ } // switch
1504
+ return r;
1505
+ }
1506
+ static inline oneapi::mkl::vm::status
1507
+ erf(const float* a, float* y,
1508
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1509
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1510
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1511
+ default:
1512
+ case oneapi::mkl::vm::mode::ha:
1513
+ r = detail::erf(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1514
+ break;
1515
+ case oneapi::mkl::vm::mode::la:
1516
+ r = detail::erf(a, y, oneapi::mkl::vm::device::detail::mode::la);
1517
+ break;
1518
+ case oneapi::mkl::vm::mode::ep:
1519
+ r = detail::erf(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1520
+ break;
1521
+ } // switch
1522
+ return r;
1523
+ }
1524
+ static inline oneapi::mkl::vm::status
1525
+ erf(const double* a, double* y,
1526
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1527
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1528
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1529
+ default:
1530
+ case oneapi::mkl::vm::mode::ha:
1531
+ r = detail::erf(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1532
+ break;
1533
+ case oneapi::mkl::vm::mode::la:
1534
+ r = detail::erf(a, y, oneapi::mkl::vm::device::detail::mode::la);
1535
+ break;
1536
+ case oneapi::mkl::vm::mode::ep:
1537
+ r = detail::erf(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1538
+ break;
1539
+ } // switch
1540
+ return r;
1541
+ }
1542
+ static inline oneapi::mkl::vm::status
1543
+ erfc(const sycl::half* a, sycl::half* y,
1544
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1545
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1546
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1547
+ default:
1548
+ case oneapi::mkl::vm::mode::ha:
1549
+ r = detail::erfc(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1550
+ break;
1551
+ case oneapi::mkl::vm::mode::la:
1552
+ r = detail::erfc(a, y, oneapi::mkl::vm::device::detail::mode::la);
1553
+ break;
1554
+ case oneapi::mkl::vm::mode::ep:
1555
+ r = detail::erfc(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1556
+ break;
1557
+ } // switch
1558
+ return r;
1559
+ }
1560
+ static inline oneapi::mkl::vm::status
1561
+ erfc(const float* a, float* y,
1562
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1563
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1564
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1565
+ default:
1566
+ case oneapi::mkl::vm::mode::ha:
1567
+ r = detail::erfc(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1568
+ break;
1569
+ case oneapi::mkl::vm::mode::la:
1570
+ r = detail::erfc(a, y, oneapi::mkl::vm::device::detail::mode::la);
1571
+ break;
1572
+ case oneapi::mkl::vm::mode::ep:
1573
+ r = detail::erfc(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1574
+ break;
1575
+ } // switch
1576
+ return r;
1577
+ }
1578
+ static inline oneapi::mkl::vm::status
1579
+ erfc(const double* a, double* y,
1580
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1581
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1582
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1583
+ default:
1584
+ case oneapi::mkl::vm::mode::ha:
1585
+ r = detail::erfc(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1586
+ break;
1587
+ case oneapi::mkl::vm::mode::la:
1588
+ r = detail::erfc(a, y, oneapi::mkl::vm::device::detail::mode::la);
1589
+ break;
1590
+ case oneapi::mkl::vm::mode::ep:
1591
+ r = detail::erfc(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1592
+ break;
1593
+ } // switch
1594
+ return r;
1595
+ }
1596
+ static inline oneapi::mkl::vm::status
1597
+ erfcinv(const sycl::half* a, sycl::half* y,
1598
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1599
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1600
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1601
+ default:
1602
+ case oneapi::mkl::vm::mode::ha:
1603
+ r = detail::erfcinv(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1604
+ break;
1605
+ case oneapi::mkl::vm::mode::la:
1606
+ r = detail::erfcinv(a, y, oneapi::mkl::vm::device::detail::mode::la);
1607
+ break;
1608
+ case oneapi::mkl::vm::mode::ep:
1609
+ r = detail::erfcinv(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1610
+ break;
1611
+ } // switch
1612
+ return r;
1613
+ }
1614
+ static inline oneapi::mkl::vm::status
1615
+ erfcinv(const float* a, float* y,
1616
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1617
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1618
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1619
+ default:
1620
+ case oneapi::mkl::vm::mode::ha:
1621
+ r = detail::erfcinv(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1622
+ break;
1623
+ case oneapi::mkl::vm::mode::la:
1624
+ r = detail::erfcinv(a, y, oneapi::mkl::vm::device::detail::mode::la);
1625
+ break;
1626
+ case oneapi::mkl::vm::mode::ep:
1627
+ r = detail::erfcinv(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1628
+ break;
1629
+ } // switch
1630
+ return r;
1631
+ }
1632
+ static inline oneapi::mkl::vm::status
1633
+ erfcinv(const double* a, double* y,
1634
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1635
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1636
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1637
+ default:
1638
+ case oneapi::mkl::vm::mode::ha:
1639
+ r = detail::erfcinv(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1640
+ break;
1641
+ case oneapi::mkl::vm::mode::la:
1642
+ r = detail::erfcinv(a, y, oneapi::mkl::vm::device::detail::mode::la);
1643
+ break;
1644
+ case oneapi::mkl::vm::mode::ep:
1645
+ r = detail::erfcinv(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1646
+ break;
1647
+ } // switch
1648
+ return r;
1649
+ }
1650
+ static inline oneapi::mkl::vm::status
1651
+ erfcx(const sycl::half* a, sycl::half* y,
1652
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1653
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1654
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1655
+ default:
1656
+ case oneapi::mkl::vm::mode::ha:
1657
+ r = detail::erfcx(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1658
+ break;
1659
+ case oneapi::mkl::vm::mode::la:
1660
+ r = detail::erfcx(a, y, oneapi::mkl::vm::device::detail::mode::la);
1661
+ break;
1662
+ case oneapi::mkl::vm::mode::ep:
1663
+ r = detail::erfcx(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1664
+ break;
1665
+ } // switch
1666
+ return r;
1667
+ }
1668
+ static inline oneapi::mkl::vm::status
1669
+ erfcx(const float* a, float* y,
1670
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1671
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1672
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1673
+ default:
1674
+ case oneapi::mkl::vm::mode::ha:
1675
+ r = detail::erfcx(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1676
+ break;
1677
+ case oneapi::mkl::vm::mode::la:
1678
+ r = detail::erfcx(a, y, oneapi::mkl::vm::device::detail::mode::la);
1679
+ break;
1680
+ case oneapi::mkl::vm::mode::ep:
1681
+ r = detail::erfcx(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1682
+ break;
1683
+ } // switch
1684
+ return r;
1685
+ }
1686
+ static inline oneapi::mkl::vm::status
1687
+ erfcx(const double* a, double* y,
1688
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1689
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1690
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1691
+ default:
1692
+ case oneapi::mkl::vm::mode::ha:
1693
+ r = detail::erfcx(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1694
+ break;
1695
+ case oneapi::mkl::vm::mode::la:
1696
+ r = detail::erfcx(a, y, oneapi::mkl::vm::device::detail::mode::la);
1697
+ break;
1698
+ case oneapi::mkl::vm::mode::ep:
1699
+ r = detail::erfcx(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1700
+ break;
1701
+ } // switch
1702
+ return r;
1703
+ }
1704
+ static inline oneapi::mkl::vm::status
1705
+ erfinv(const sycl::half* a, sycl::half* y,
1706
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1707
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1708
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1709
+ default:
1710
+ case oneapi::mkl::vm::mode::ha:
1711
+ r = detail::erfinv(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1712
+ break;
1713
+ case oneapi::mkl::vm::mode::la:
1714
+ r = detail::erfinv(a, y, oneapi::mkl::vm::device::detail::mode::la);
1715
+ break;
1716
+ case oneapi::mkl::vm::mode::ep:
1717
+ r = detail::erfinv(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1718
+ break;
1719
+ } // switch
1720
+ return r;
1721
+ }
1722
+ static inline oneapi::mkl::vm::status
1723
+ erfinv(const float* a, float* y,
1724
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1725
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1726
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1727
+ default:
1728
+ case oneapi::mkl::vm::mode::ha:
1729
+ r = detail::erfinv(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1730
+ break;
1731
+ case oneapi::mkl::vm::mode::la:
1732
+ r = detail::erfinv(a, y, oneapi::mkl::vm::device::detail::mode::la);
1733
+ break;
1734
+ case oneapi::mkl::vm::mode::ep:
1735
+ r = detail::erfinv(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1736
+ break;
1737
+ } // switch
1738
+ return r;
1739
+ }
1740
+ static inline oneapi::mkl::vm::status
1741
+ erfinv(const double* a, double* y,
1742
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1743
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1744
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1745
+ default:
1746
+ case oneapi::mkl::vm::mode::ha:
1747
+ r = detail::erfinv(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1748
+ break;
1749
+ case oneapi::mkl::vm::mode::la:
1750
+ r = detail::erfinv(a, y, oneapi::mkl::vm::device::detail::mode::la);
1751
+ break;
1752
+ case oneapi::mkl::vm::mode::ep:
1753
+ r = detail::erfinv(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1754
+ break;
1755
+ } // switch
1756
+ return r;
1757
+ }
1758
+ static inline oneapi::mkl::vm::status
1759
+ exp(const sycl::half* a, sycl::half* y,
1760
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1761
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1762
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1763
+ default:
1764
+ case oneapi::mkl::vm::mode::ha:
1765
+ r = detail::exp(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1766
+ break;
1767
+ case oneapi::mkl::vm::mode::la:
1768
+ r = detail::exp(a, y, oneapi::mkl::vm::device::detail::mode::la);
1769
+ break;
1770
+ case oneapi::mkl::vm::mode::ep:
1771
+ r = detail::exp(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1772
+ break;
1773
+ } // switch
1774
+ return r;
1775
+ }
1776
+ static inline oneapi::mkl::vm::status
1777
+ exp(const float* a, float* y,
1778
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1779
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1780
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1781
+ default:
1782
+ case oneapi::mkl::vm::mode::ha:
1783
+ r = detail::exp(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1784
+ break;
1785
+ case oneapi::mkl::vm::mode::la:
1786
+ r = detail::exp(a, y, oneapi::mkl::vm::device::detail::mode::la);
1787
+ break;
1788
+ case oneapi::mkl::vm::mode::ep:
1789
+ r = detail::exp(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1790
+ break;
1791
+ } // switch
1792
+ return r;
1793
+ }
1794
+ static inline oneapi::mkl::vm::status
1795
+ exp(const double* a, double* y,
1796
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1797
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1798
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1799
+ default:
1800
+ case oneapi::mkl::vm::mode::ha:
1801
+ r = detail::exp(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1802
+ break;
1803
+ case oneapi::mkl::vm::mode::la:
1804
+ r = detail::exp(a, y, oneapi::mkl::vm::device::detail::mode::la);
1805
+ break;
1806
+ case oneapi::mkl::vm::mode::ep:
1807
+ r = detail::exp(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1808
+ break;
1809
+ } // switch
1810
+ return r;
1811
+ }
1812
+ static inline oneapi::mkl::vm::status
1813
+ exp(const std::complex<float>* a, std::complex<float>* y,
1814
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1815
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1816
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1817
+ default:
1818
+ case oneapi::mkl::vm::mode::ha:
1819
+ r = detail::exp(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1820
+ break;
1821
+ case oneapi::mkl::vm::mode::la:
1822
+ r = detail::exp(a, y, oneapi::mkl::vm::device::detail::mode::la);
1823
+ break;
1824
+ case oneapi::mkl::vm::mode::ep:
1825
+ r = detail::exp(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1826
+ break;
1827
+ } // switch
1828
+ return r;
1829
+ }
1830
+ static inline oneapi::mkl::vm::status
1831
+ exp(const std::complex<double>* a, std::complex<double>* y,
1832
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1833
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1834
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1835
+ default:
1836
+ case oneapi::mkl::vm::mode::ha:
1837
+ r = detail::exp(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1838
+ break;
1839
+ case oneapi::mkl::vm::mode::la:
1840
+ r = detail::exp(a, y, oneapi::mkl::vm::device::detail::mode::la);
1841
+ break;
1842
+ case oneapi::mkl::vm::mode::ep:
1843
+ r = detail::exp(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1844
+ break;
1845
+ } // switch
1846
+ return r;
1847
+ }
1848
+ static inline oneapi::mkl::vm::status
1849
+ exp10(const sycl::half* a, sycl::half* y,
1850
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1851
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1852
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1853
+ default:
1854
+ case oneapi::mkl::vm::mode::ha:
1855
+ r = detail::exp10(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1856
+ break;
1857
+ case oneapi::mkl::vm::mode::la:
1858
+ r = detail::exp10(a, y, oneapi::mkl::vm::device::detail::mode::la);
1859
+ break;
1860
+ case oneapi::mkl::vm::mode::ep:
1861
+ r = detail::exp10(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1862
+ break;
1863
+ } // switch
1864
+ return r;
1865
+ }
1866
+ static inline oneapi::mkl::vm::status
1867
+ exp10(const float* a, float* y,
1868
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1869
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1870
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1871
+ default:
1872
+ case oneapi::mkl::vm::mode::ha:
1873
+ r = detail::exp10(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1874
+ break;
1875
+ case oneapi::mkl::vm::mode::la:
1876
+ r = detail::exp10(a, y, oneapi::mkl::vm::device::detail::mode::la);
1877
+ break;
1878
+ case oneapi::mkl::vm::mode::ep:
1879
+ r = detail::exp10(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1880
+ break;
1881
+ } // switch
1882
+ return r;
1883
+ }
1884
+ static inline oneapi::mkl::vm::status
1885
+ exp10(const double* a, double* y,
1886
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1887
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1888
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1889
+ default:
1890
+ case oneapi::mkl::vm::mode::ha:
1891
+ r = detail::exp10(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1892
+ break;
1893
+ case oneapi::mkl::vm::mode::la:
1894
+ r = detail::exp10(a, y, oneapi::mkl::vm::device::detail::mode::la);
1895
+ break;
1896
+ case oneapi::mkl::vm::mode::ep:
1897
+ r = detail::exp10(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1898
+ break;
1899
+ } // switch
1900
+ return r;
1901
+ }
1902
+ static inline oneapi::mkl::vm::status
1903
+ exp2(const sycl::half* a, sycl::half* y,
1904
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1905
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1906
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1907
+ default:
1908
+ case oneapi::mkl::vm::mode::ha:
1909
+ r = detail::exp2(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1910
+ break;
1911
+ case oneapi::mkl::vm::mode::la:
1912
+ r = detail::exp2(a, y, oneapi::mkl::vm::device::detail::mode::la);
1913
+ break;
1914
+ case oneapi::mkl::vm::mode::ep:
1915
+ r = detail::exp2(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1916
+ break;
1917
+ } // switch
1918
+ return r;
1919
+ }
1920
+ static inline oneapi::mkl::vm::status
1921
+ exp2(const float* a, float* y,
1922
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1923
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1924
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1925
+ default:
1926
+ case oneapi::mkl::vm::mode::ha:
1927
+ r = detail::exp2(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1928
+ break;
1929
+ case oneapi::mkl::vm::mode::la:
1930
+ r = detail::exp2(a, y, oneapi::mkl::vm::device::detail::mode::la);
1931
+ break;
1932
+ case oneapi::mkl::vm::mode::ep:
1933
+ r = detail::exp2(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1934
+ break;
1935
+ } // switch
1936
+ return r;
1937
+ }
1938
+ static inline oneapi::mkl::vm::status
1939
+ exp2(const double* a, double* y,
1940
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1941
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1942
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1943
+ default:
1944
+ case oneapi::mkl::vm::mode::ha:
1945
+ r = detail::exp2(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1946
+ break;
1947
+ case oneapi::mkl::vm::mode::la:
1948
+ r = detail::exp2(a, y, oneapi::mkl::vm::device::detail::mode::la);
1949
+ break;
1950
+ case oneapi::mkl::vm::mode::ep:
1951
+ r = detail::exp2(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1952
+ break;
1953
+ } // switch
1954
+ return r;
1955
+ }
1956
+ static inline oneapi::mkl::vm::status
1957
+ expm1(const sycl::half* a, sycl::half* y,
1958
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1959
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1960
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1961
+ default:
1962
+ case oneapi::mkl::vm::mode::ha:
1963
+ r = detail::expm1(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1964
+ break;
1965
+ case oneapi::mkl::vm::mode::la:
1966
+ r = detail::expm1(a, y, oneapi::mkl::vm::device::detail::mode::la);
1967
+ break;
1968
+ case oneapi::mkl::vm::mode::ep:
1969
+ r = detail::expm1(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1970
+ break;
1971
+ } // switch
1972
+ return r;
1973
+ }
1974
+ static inline oneapi::mkl::vm::status
1975
+ expm1(const float* a, float* y,
1976
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1977
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1978
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1979
+ default:
1980
+ case oneapi::mkl::vm::mode::ha:
1981
+ r = detail::expm1(a, y, oneapi::mkl::vm::device::detail::mode::ha);
1982
+ break;
1983
+ case oneapi::mkl::vm::mode::la:
1984
+ r = detail::expm1(a, y, oneapi::mkl::vm::device::detail::mode::la);
1985
+ break;
1986
+ case oneapi::mkl::vm::mode::ep:
1987
+ r = detail::expm1(a, y, oneapi::mkl::vm::device::detail::mode::ep);
1988
+ break;
1989
+ } // switch
1990
+ return r;
1991
+ }
1992
+ static inline oneapi::mkl::vm::status
1993
+ expm1(const double* a, double* y,
1994
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
1995
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
1996
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
1997
+ default:
1998
+ case oneapi::mkl::vm::mode::ha:
1999
+ r = detail::expm1(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2000
+ break;
2001
+ case oneapi::mkl::vm::mode::la:
2002
+ r = detail::expm1(a, y, oneapi::mkl::vm::device::detail::mode::la);
2003
+ break;
2004
+ case oneapi::mkl::vm::mode::ep:
2005
+ r = detail::expm1(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2006
+ break;
2007
+ } // switch
2008
+ return r;
2009
+ }
2010
+ static inline oneapi::mkl::vm::status
2011
+ fdim(const sycl::half* a, const sycl::half* b, sycl::half* y,
2012
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2013
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2014
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2015
+ default:
2016
+ case oneapi::mkl::vm::mode::ha:
2017
+ r = detail::fdim(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2018
+ break;
2019
+ case oneapi::mkl::vm::mode::la:
2020
+ r = detail::fdim(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2021
+ break;
2022
+ case oneapi::mkl::vm::mode::ep:
2023
+ r = detail::fdim(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2024
+ break;
2025
+ } // switch
2026
+ return r;
2027
+ }
2028
+ static inline oneapi::mkl::vm::status
2029
+ fdim(const float* a, const float* b, float* y,
2030
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2031
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2032
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2033
+ default:
2034
+ case oneapi::mkl::vm::mode::ha:
2035
+ r = detail::fdim(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2036
+ break;
2037
+ case oneapi::mkl::vm::mode::la:
2038
+ r = detail::fdim(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2039
+ break;
2040
+ case oneapi::mkl::vm::mode::ep:
2041
+ r = detail::fdim(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2042
+ break;
2043
+ } // switch
2044
+ return r;
2045
+ }
2046
+ static inline oneapi::mkl::vm::status
2047
+ fdim(const double* a, const double* b, double* y,
2048
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2049
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2050
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2051
+ default:
2052
+ case oneapi::mkl::vm::mode::ha:
2053
+ r = detail::fdim(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2054
+ break;
2055
+ case oneapi::mkl::vm::mode::la:
2056
+ r = detail::fdim(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2057
+ break;
2058
+ case oneapi::mkl::vm::mode::ep:
2059
+ r = detail::fdim(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2060
+ break;
2061
+ } // switch
2062
+ return r;
2063
+ }
2064
+ static inline oneapi::mkl::vm::status
2065
+ floor(const sycl::half* a, sycl::half* y,
2066
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2067
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2068
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2069
+ default:
2070
+ case oneapi::mkl::vm::mode::ha:
2071
+ r = detail::floor(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2072
+ break;
2073
+ case oneapi::mkl::vm::mode::la:
2074
+ r = detail::floor(a, y, oneapi::mkl::vm::device::detail::mode::la);
2075
+ break;
2076
+ case oneapi::mkl::vm::mode::ep:
2077
+ r = detail::floor(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2078
+ break;
2079
+ } // switch
2080
+ return r;
2081
+ }
2082
+ static inline oneapi::mkl::vm::status
2083
+ floor(const float* a, float* y,
2084
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2085
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2086
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2087
+ default:
2088
+ case oneapi::mkl::vm::mode::ha:
2089
+ r = detail::floor(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2090
+ break;
2091
+ case oneapi::mkl::vm::mode::la:
2092
+ r = detail::floor(a, y, oneapi::mkl::vm::device::detail::mode::la);
2093
+ break;
2094
+ case oneapi::mkl::vm::mode::ep:
2095
+ r = detail::floor(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2096
+ break;
2097
+ } // switch
2098
+ return r;
2099
+ }
2100
+ static inline oneapi::mkl::vm::status
2101
+ floor(const double* a, double* y,
2102
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2103
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2104
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2105
+ default:
2106
+ case oneapi::mkl::vm::mode::ha:
2107
+ r = detail::floor(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2108
+ break;
2109
+ case oneapi::mkl::vm::mode::la:
2110
+ r = detail::floor(a, y, oneapi::mkl::vm::device::detail::mode::la);
2111
+ break;
2112
+ case oneapi::mkl::vm::mode::ep:
2113
+ r = detail::floor(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2114
+ break;
2115
+ } // switch
2116
+ return r;
2117
+ }
2118
+ static inline oneapi::mkl::vm::status
2119
+ fmax(const sycl::half* a, const sycl::half* b, sycl::half* y,
2120
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2121
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2122
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2123
+ default:
2124
+ case oneapi::mkl::vm::mode::ha:
2125
+ r = detail::fmax(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2126
+ break;
2127
+ case oneapi::mkl::vm::mode::la:
2128
+ r = detail::fmax(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2129
+ break;
2130
+ case oneapi::mkl::vm::mode::ep:
2131
+ r = detail::fmax(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2132
+ break;
2133
+ } // switch
2134
+ return r;
2135
+ }
2136
+ static inline oneapi::mkl::vm::status
2137
+ fmax(const float* a, const float* b, float* y,
2138
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2139
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2140
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2141
+ default:
2142
+ case oneapi::mkl::vm::mode::ha:
2143
+ r = detail::fmax(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2144
+ break;
2145
+ case oneapi::mkl::vm::mode::la:
2146
+ r = detail::fmax(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2147
+ break;
2148
+ case oneapi::mkl::vm::mode::ep:
2149
+ r = detail::fmax(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2150
+ break;
2151
+ } // switch
2152
+ return r;
2153
+ }
2154
+ static inline oneapi::mkl::vm::status
2155
+ fmax(const double* a, const double* b, double* y,
2156
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2157
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2158
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2159
+ default:
2160
+ case oneapi::mkl::vm::mode::ha:
2161
+ r = detail::fmax(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2162
+ break;
2163
+ case oneapi::mkl::vm::mode::la:
2164
+ r = detail::fmax(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2165
+ break;
2166
+ case oneapi::mkl::vm::mode::ep:
2167
+ r = detail::fmax(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2168
+ break;
2169
+ } // switch
2170
+ return r;
2171
+ }
2172
+ static inline oneapi::mkl::vm::status
2173
+ fmin(const sycl::half* a, const sycl::half* b, sycl::half* y,
2174
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2175
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2176
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2177
+ default:
2178
+ case oneapi::mkl::vm::mode::ha:
2179
+ r = detail::fmin(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2180
+ break;
2181
+ case oneapi::mkl::vm::mode::la:
2182
+ r = detail::fmin(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2183
+ break;
2184
+ case oneapi::mkl::vm::mode::ep:
2185
+ r = detail::fmin(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2186
+ break;
2187
+ } // switch
2188
+ return r;
2189
+ }
2190
+ static inline oneapi::mkl::vm::status
2191
+ fmin(const float* a, const float* b, float* y,
2192
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2193
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2194
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2195
+ default:
2196
+ case oneapi::mkl::vm::mode::ha:
2197
+ r = detail::fmin(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2198
+ break;
2199
+ case oneapi::mkl::vm::mode::la:
2200
+ r = detail::fmin(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2201
+ break;
2202
+ case oneapi::mkl::vm::mode::ep:
2203
+ r = detail::fmin(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2204
+ break;
2205
+ } // switch
2206
+ return r;
2207
+ }
2208
+ static inline oneapi::mkl::vm::status
2209
+ fmin(const double* a, const double* b, double* y,
2210
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2211
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2212
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2213
+ default:
2214
+ case oneapi::mkl::vm::mode::ha:
2215
+ r = detail::fmin(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2216
+ break;
2217
+ case oneapi::mkl::vm::mode::la:
2218
+ r = detail::fmin(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2219
+ break;
2220
+ case oneapi::mkl::vm::mode::ep:
2221
+ r = detail::fmin(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2222
+ break;
2223
+ } // switch
2224
+ return r;
2225
+ }
2226
+ static inline oneapi::mkl::vm::status
2227
+ fmod(const sycl::half* a, const sycl::half* b, sycl::half* y,
2228
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2229
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2230
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2231
+ default:
2232
+ case oneapi::mkl::vm::mode::ha:
2233
+ r = detail::fmod(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2234
+ break;
2235
+ case oneapi::mkl::vm::mode::la:
2236
+ r = detail::fmod(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2237
+ break;
2238
+ case oneapi::mkl::vm::mode::ep:
2239
+ r = detail::fmod(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2240
+ break;
2241
+ } // switch
2242
+ return r;
2243
+ }
2244
+ static inline oneapi::mkl::vm::status
2245
+ fmod(const float* a, const float* b, float* y,
2246
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2247
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2248
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2249
+ default:
2250
+ case oneapi::mkl::vm::mode::ha:
2251
+ r = detail::fmod(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2252
+ break;
2253
+ case oneapi::mkl::vm::mode::la:
2254
+ r = detail::fmod(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2255
+ break;
2256
+ case oneapi::mkl::vm::mode::ep:
2257
+ r = detail::fmod(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2258
+ break;
2259
+ } // switch
2260
+ return r;
2261
+ }
2262
+ static inline oneapi::mkl::vm::status
2263
+ fmod(const double* a, const double* b, double* y,
2264
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2265
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2266
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2267
+ default:
2268
+ case oneapi::mkl::vm::mode::ha:
2269
+ r = detail::fmod(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2270
+ break;
2271
+ case oneapi::mkl::vm::mode::la:
2272
+ r = detail::fmod(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2273
+ break;
2274
+ case oneapi::mkl::vm::mode::ep:
2275
+ r = detail::fmod(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2276
+ break;
2277
+ } // switch
2278
+ return r;
2279
+ }
2280
+ static inline oneapi::mkl::vm::status
2281
+ frac(const sycl::half* a, sycl::half* y,
2282
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2283
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2284
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2285
+ default:
2286
+ case oneapi::mkl::vm::mode::ha:
2287
+ r = detail::frac(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2288
+ break;
2289
+ case oneapi::mkl::vm::mode::la:
2290
+ r = detail::frac(a, y, oneapi::mkl::vm::device::detail::mode::la);
2291
+ break;
2292
+ case oneapi::mkl::vm::mode::ep:
2293
+ r = detail::frac(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2294
+ break;
2295
+ } // switch
2296
+ return r;
2297
+ }
2298
+ static inline oneapi::mkl::vm::status
2299
+ frac(const float* a, float* y,
2300
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2301
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2302
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2303
+ default:
2304
+ case oneapi::mkl::vm::mode::ha:
2305
+ r = detail::frac(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2306
+ break;
2307
+ case oneapi::mkl::vm::mode::la:
2308
+ r = detail::frac(a, y, oneapi::mkl::vm::device::detail::mode::la);
2309
+ break;
2310
+ case oneapi::mkl::vm::mode::ep:
2311
+ r = detail::frac(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2312
+ break;
2313
+ } // switch
2314
+ return r;
2315
+ }
2316
+ static inline oneapi::mkl::vm::status
2317
+ frac(const double* a, double* y,
2318
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2319
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2320
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2321
+ default:
2322
+ case oneapi::mkl::vm::mode::ha:
2323
+ r = detail::frac(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2324
+ break;
2325
+ case oneapi::mkl::vm::mode::la:
2326
+ r = detail::frac(a, y, oneapi::mkl::vm::device::detail::mode::la);
2327
+ break;
2328
+ case oneapi::mkl::vm::mode::ep:
2329
+ r = detail::frac(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2330
+ break;
2331
+ } // switch
2332
+ return r;
2333
+ }
2334
+ static inline oneapi::mkl::vm::status
2335
+ hypot(const sycl::half* a, const sycl::half* b, sycl::half* y,
2336
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2337
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2338
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2339
+ default:
2340
+ case oneapi::mkl::vm::mode::ha:
2341
+ r = detail::hypot(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2342
+ break;
2343
+ case oneapi::mkl::vm::mode::la:
2344
+ r = detail::hypot(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2345
+ break;
2346
+ case oneapi::mkl::vm::mode::ep:
2347
+ r = detail::hypot(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2348
+ break;
2349
+ } // switch
2350
+ return r;
2351
+ }
2352
+ static inline oneapi::mkl::vm::status
2353
+ hypot(const float* a, const float* b, float* y,
2354
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2355
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2356
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2357
+ default:
2358
+ case oneapi::mkl::vm::mode::ha:
2359
+ r = detail::hypot(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2360
+ break;
2361
+ case oneapi::mkl::vm::mode::la:
2362
+ r = detail::hypot(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2363
+ break;
2364
+ case oneapi::mkl::vm::mode::ep:
2365
+ r = detail::hypot(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2366
+ break;
2367
+ } // switch
2368
+ return r;
2369
+ }
2370
+ static inline oneapi::mkl::vm::status
2371
+ hypot(const double* a, const double* b, double* y,
2372
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2373
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2374
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2375
+ default:
2376
+ case oneapi::mkl::vm::mode::ha:
2377
+ r = detail::hypot(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2378
+ break;
2379
+ case oneapi::mkl::vm::mode::la:
2380
+ r = detail::hypot(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2381
+ break;
2382
+ case oneapi::mkl::vm::mode::ep:
2383
+ r = detail::hypot(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2384
+ break;
2385
+ } // switch
2386
+ return r;
2387
+ }
2388
+ static inline oneapi::mkl::vm::status
2389
+ inv(const sycl::half* a, sycl::half* y,
2390
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2391
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2392
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2393
+ default:
2394
+ case oneapi::mkl::vm::mode::ha:
2395
+ r = detail::inv(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2396
+ break;
2397
+ case oneapi::mkl::vm::mode::la:
2398
+ r = detail::inv(a, y, oneapi::mkl::vm::device::detail::mode::la);
2399
+ break;
2400
+ case oneapi::mkl::vm::mode::ep:
2401
+ r = detail::inv(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2402
+ break;
2403
+ } // switch
2404
+ return r;
2405
+ }
2406
+ static inline oneapi::mkl::vm::status
2407
+ inv(const float* a, float* y,
2408
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2409
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2410
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2411
+ default:
2412
+ case oneapi::mkl::vm::mode::ha:
2413
+ r = detail::inv(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2414
+ break;
2415
+ case oneapi::mkl::vm::mode::la:
2416
+ r = detail::inv(a, y, oneapi::mkl::vm::device::detail::mode::la);
2417
+ break;
2418
+ case oneapi::mkl::vm::mode::ep:
2419
+ r = detail::inv(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2420
+ break;
2421
+ } // switch
2422
+ return r;
2423
+ }
2424
+ static inline oneapi::mkl::vm::status
2425
+ inv(const double* a, double* y,
2426
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2427
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2428
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2429
+ default:
2430
+ case oneapi::mkl::vm::mode::ha:
2431
+ r = detail::inv(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2432
+ break;
2433
+ case oneapi::mkl::vm::mode::la:
2434
+ r = detail::inv(a, y, oneapi::mkl::vm::device::detail::mode::la);
2435
+ break;
2436
+ case oneapi::mkl::vm::mode::ep:
2437
+ r = detail::inv(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2438
+ break;
2439
+ } // switch
2440
+ return r;
2441
+ }
2442
+ static inline oneapi::mkl::vm::status
2443
+ invcbrt(const sycl::half* a, sycl::half* y,
2444
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2445
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2446
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2447
+ default:
2448
+ case oneapi::mkl::vm::mode::ha:
2449
+ r = detail::invcbrt(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2450
+ break;
2451
+ case oneapi::mkl::vm::mode::la:
2452
+ r = detail::invcbrt(a, y, oneapi::mkl::vm::device::detail::mode::la);
2453
+ break;
2454
+ case oneapi::mkl::vm::mode::ep:
2455
+ r = detail::invcbrt(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2456
+ break;
2457
+ } // switch
2458
+ return r;
2459
+ }
2460
+ static inline oneapi::mkl::vm::status
2461
+ invcbrt(const float* a, float* y,
2462
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2463
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2464
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2465
+ default:
2466
+ case oneapi::mkl::vm::mode::ha:
2467
+ r = detail::invcbrt(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2468
+ break;
2469
+ case oneapi::mkl::vm::mode::la:
2470
+ r = detail::invcbrt(a, y, oneapi::mkl::vm::device::detail::mode::la);
2471
+ break;
2472
+ case oneapi::mkl::vm::mode::ep:
2473
+ r = detail::invcbrt(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2474
+ break;
2475
+ } // switch
2476
+ return r;
2477
+ }
2478
+ static inline oneapi::mkl::vm::status
2479
+ invcbrt(const double* a, double* y,
2480
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2481
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2482
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2483
+ default:
2484
+ case oneapi::mkl::vm::mode::ha:
2485
+ r = detail::invcbrt(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2486
+ break;
2487
+ case oneapi::mkl::vm::mode::la:
2488
+ r = detail::invcbrt(a, y, oneapi::mkl::vm::device::detail::mode::la);
2489
+ break;
2490
+ case oneapi::mkl::vm::mode::ep:
2491
+ r = detail::invcbrt(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2492
+ break;
2493
+ } // switch
2494
+ return r;
2495
+ }
2496
+ static inline oneapi::mkl::vm::status
2497
+ invsqrt(const sycl::half* a, sycl::half* y,
2498
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2499
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2500
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2501
+ default:
2502
+ case oneapi::mkl::vm::mode::ha:
2503
+ r = detail::invsqrt(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2504
+ break;
2505
+ case oneapi::mkl::vm::mode::la:
2506
+ r = detail::invsqrt(a, y, oneapi::mkl::vm::device::detail::mode::la);
2507
+ break;
2508
+ case oneapi::mkl::vm::mode::ep:
2509
+ r = detail::invsqrt(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2510
+ break;
2511
+ } // switch
2512
+ return r;
2513
+ }
2514
+ static inline oneapi::mkl::vm::status
2515
+ invsqrt(const float* a, float* y,
2516
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2517
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2518
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2519
+ default:
2520
+ case oneapi::mkl::vm::mode::ha:
2521
+ r = detail::invsqrt(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2522
+ break;
2523
+ case oneapi::mkl::vm::mode::la:
2524
+ r = detail::invsqrt(a, y, oneapi::mkl::vm::device::detail::mode::la);
2525
+ break;
2526
+ case oneapi::mkl::vm::mode::ep:
2527
+ r = detail::invsqrt(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2528
+ break;
2529
+ } // switch
2530
+ return r;
2531
+ }
2532
+ static inline oneapi::mkl::vm::status
2533
+ invsqrt(const double* a, double* y,
2534
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2535
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2536
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2537
+ default:
2538
+ case oneapi::mkl::vm::mode::ha:
2539
+ r = detail::invsqrt(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2540
+ break;
2541
+ case oneapi::mkl::vm::mode::la:
2542
+ r = detail::invsqrt(a, y, oneapi::mkl::vm::device::detail::mode::la);
2543
+ break;
2544
+ case oneapi::mkl::vm::mode::ep:
2545
+ r = detail::invsqrt(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2546
+ break;
2547
+ } // switch
2548
+ return r;
2549
+ }
2550
+ static inline oneapi::mkl::vm::status
2551
+ lgamma(const sycl::half* a, sycl::half* y,
2552
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2553
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2554
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2555
+ default:
2556
+ case oneapi::mkl::vm::mode::ha:
2557
+ r = detail::lgamma(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2558
+ break;
2559
+ case oneapi::mkl::vm::mode::la:
2560
+ r = detail::lgamma(a, y, oneapi::mkl::vm::device::detail::mode::la);
2561
+ break;
2562
+ case oneapi::mkl::vm::mode::ep:
2563
+ r = detail::lgamma(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2564
+ break;
2565
+ } // switch
2566
+ return r;
2567
+ }
2568
+ static inline oneapi::mkl::vm::status
2569
+ lgamma(const float* a, float* y,
2570
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2571
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2572
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2573
+ default:
2574
+ case oneapi::mkl::vm::mode::ha:
2575
+ r = detail::lgamma(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2576
+ break;
2577
+ case oneapi::mkl::vm::mode::la:
2578
+ r = detail::lgamma(a, y, oneapi::mkl::vm::device::detail::mode::la);
2579
+ break;
2580
+ case oneapi::mkl::vm::mode::ep:
2581
+ r = detail::lgamma(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2582
+ break;
2583
+ } // switch
2584
+ return r;
2585
+ }
2586
+ static inline oneapi::mkl::vm::status
2587
+ ln(const sycl::half* a, sycl::half* y,
2588
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2589
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2590
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2591
+ default:
2592
+ case oneapi::mkl::vm::mode::ha:
2593
+ r = detail::ln(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2594
+ break;
2595
+ case oneapi::mkl::vm::mode::la:
2596
+ r = detail::ln(a, y, oneapi::mkl::vm::device::detail::mode::la);
2597
+ break;
2598
+ case oneapi::mkl::vm::mode::ep:
2599
+ r = detail::ln(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2600
+ break;
2601
+ } // switch
2602
+ return r;
2603
+ }
2604
+ static inline oneapi::mkl::vm::status
2605
+ ln(const float* a, float* y,
2606
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2607
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2608
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2609
+ default:
2610
+ case oneapi::mkl::vm::mode::ha:
2611
+ r = detail::ln(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2612
+ break;
2613
+ case oneapi::mkl::vm::mode::la:
2614
+ r = detail::ln(a, y, oneapi::mkl::vm::device::detail::mode::la);
2615
+ break;
2616
+ case oneapi::mkl::vm::mode::ep:
2617
+ r = detail::ln(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2618
+ break;
2619
+ } // switch
2620
+ return r;
2621
+ }
2622
+ static inline oneapi::mkl::vm::status
2623
+ ln(const double* a, double* y,
2624
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2625
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2626
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2627
+ default:
2628
+ case oneapi::mkl::vm::mode::ha:
2629
+ r = detail::ln(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2630
+ break;
2631
+ case oneapi::mkl::vm::mode::la:
2632
+ r = detail::ln(a, y, oneapi::mkl::vm::device::detail::mode::la);
2633
+ break;
2634
+ case oneapi::mkl::vm::mode::ep:
2635
+ r = detail::ln(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2636
+ break;
2637
+ } // switch
2638
+ return r;
2639
+ }
2640
+ static inline oneapi::mkl::vm::status
2641
+ ln(const std::complex<float>* a, std::complex<float>* y,
2642
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2643
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2644
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2645
+ default:
2646
+ case oneapi::mkl::vm::mode::ha:
2647
+ r = detail::ln(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2648
+ break;
2649
+ case oneapi::mkl::vm::mode::la:
2650
+ r = detail::ln(a, y, oneapi::mkl::vm::device::detail::mode::la);
2651
+ break;
2652
+ case oneapi::mkl::vm::mode::ep:
2653
+ r = detail::ln(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2654
+ break;
2655
+ } // switch
2656
+ return r;
2657
+ }
2658
+ static inline oneapi::mkl::vm::status
2659
+ ln(const std::complex<double>* a, std::complex<double>* y,
2660
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2661
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2662
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2663
+ default:
2664
+ case oneapi::mkl::vm::mode::ha:
2665
+ r = detail::ln(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2666
+ break;
2667
+ case oneapi::mkl::vm::mode::la:
2668
+ r = detail::ln(a, y, oneapi::mkl::vm::device::detail::mode::la);
2669
+ break;
2670
+ case oneapi::mkl::vm::mode::ep:
2671
+ r = detail::ln(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2672
+ break;
2673
+ } // switch
2674
+ return r;
2675
+ }
2676
+ static inline oneapi::mkl::vm::status
2677
+ log10(const sycl::half* a, sycl::half* y,
2678
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2679
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2680
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2681
+ default:
2682
+ case oneapi::mkl::vm::mode::ha:
2683
+ r = detail::log10(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2684
+ break;
2685
+ case oneapi::mkl::vm::mode::la:
2686
+ r = detail::log10(a, y, oneapi::mkl::vm::device::detail::mode::la);
2687
+ break;
2688
+ case oneapi::mkl::vm::mode::ep:
2689
+ r = detail::log10(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2690
+ break;
2691
+ } // switch
2692
+ return r;
2693
+ }
2694
+ static inline oneapi::mkl::vm::status
2695
+ log10(const float* a, float* y,
2696
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2697
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2698
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2699
+ default:
2700
+ case oneapi::mkl::vm::mode::ha:
2701
+ r = detail::log10(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2702
+ break;
2703
+ case oneapi::mkl::vm::mode::la:
2704
+ r = detail::log10(a, y, oneapi::mkl::vm::device::detail::mode::la);
2705
+ break;
2706
+ case oneapi::mkl::vm::mode::ep:
2707
+ r = detail::log10(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2708
+ break;
2709
+ } // switch
2710
+ return r;
2711
+ }
2712
+ static inline oneapi::mkl::vm::status
2713
+ log10(const double* a, double* y,
2714
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2715
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2716
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2717
+ default:
2718
+ case oneapi::mkl::vm::mode::ha:
2719
+ r = detail::log10(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2720
+ break;
2721
+ case oneapi::mkl::vm::mode::la:
2722
+ r = detail::log10(a, y, oneapi::mkl::vm::device::detail::mode::la);
2723
+ break;
2724
+ case oneapi::mkl::vm::mode::ep:
2725
+ r = detail::log10(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2726
+ break;
2727
+ } // switch
2728
+ return r;
2729
+ }
2730
+ static inline oneapi::mkl::vm::status
2731
+ log1p(const sycl::half* a, sycl::half* y,
2732
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2733
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2734
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2735
+ default:
2736
+ case oneapi::mkl::vm::mode::ha:
2737
+ r = detail::log1p(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2738
+ break;
2739
+ case oneapi::mkl::vm::mode::la:
2740
+ r = detail::log1p(a, y, oneapi::mkl::vm::device::detail::mode::la);
2741
+ break;
2742
+ case oneapi::mkl::vm::mode::ep:
2743
+ r = detail::log1p(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2744
+ break;
2745
+ } // switch
2746
+ return r;
2747
+ }
2748
+ static inline oneapi::mkl::vm::status
2749
+ log1p(const float* a, float* y,
2750
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2751
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2752
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2753
+ default:
2754
+ case oneapi::mkl::vm::mode::ha:
2755
+ r = detail::log1p(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2756
+ break;
2757
+ case oneapi::mkl::vm::mode::la:
2758
+ r = detail::log1p(a, y, oneapi::mkl::vm::device::detail::mode::la);
2759
+ break;
2760
+ case oneapi::mkl::vm::mode::ep:
2761
+ r = detail::log1p(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2762
+ break;
2763
+ } // switch
2764
+ return r;
2765
+ }
2766
+ static inline oneapi::mkl::vm::status
2767
+ log1p(const double* a, double* y,
2768
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2769
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2770
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2771
+ default:
2772
+ case oneapi::mkl::vm::mode::ha:
2773
+ r = detail::log1p(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2774
+ break;
2775
+ case oneapi::mkl::vm::mode::la:
2776
+ r = detail::log1p(a, y, oneapi::mkl::vm::device::detail::mode::la);
2777
+ break;
2778
+ case oneapi::mkl::vm::mode::ep:
2779
+ r = detail::log1p(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2780
+ break;
2781
+ } // switch
2782
+ return r;
2783
+ }
2784
+ static inline oneapi::mkl::vm::status
2785
+ log2(const sycl::half* a, sycl::half* y,
2786
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2787
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2788
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2789
+ default:
2790
+ case oneapi::mkl::vm::mode::ha:
2791
+ r = detail::log2(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2792
+ break;
2793
+ case oneapi::mkl::vm::mode::la:
2794
+ r = detail::log2(a, y, oneapi::mkl::vm::device::detail::mode::la);
2795
+ break;
2796
+ case oneapi::mkl::vm::mode::ep:
2797
+ r = detail::log2(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2798
+ break;
2799
+ } // switch
2800
+ return r;
2801
+ }
2802
+ static inline oneapi::mkl::vm::status
2803
+ log2(const float* a, float* y,
2804
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2805
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2806
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2807
+ default:
2808
+ case oneapi::mkl::vm::mode::ha:
2809
+ r = detail::log2(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2810
+ break;
2811
+ case oneapi::mkl::vm::mode::la:
2812
+ r = detail::log2(a, y, oneapi::mkl::vm::device::detail::mode::la);
2813
+ break;
2814
+ case oneapi::mkl::vm::mode::ep:
2815
+ r = detail::log2(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2816
+ break;
2817
+ } // switch
2818
+ return r;
2819
+ }
2820
+ static inline oneapi::mkl::vm::status
2821
+ log2(const double* a, double* y,
2822
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2823
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2824
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2825
+ default:
2826
+ case oneapi::mkl::vm::mode::ha:
2827
+ r = detail::log2(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2828
+ break;
2829
+ case oneapi::mkl::vm::mode::la:
2830
+ r = detail::log2(a, y, oneapi::mkl::vm::device::detail::mode::la);
2831
+ break;
2832
+ case oneapi::mkl::vm::mode::ep:
2833
+ r = detail::log2(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2834
+ break;
2835
+ } // switch
2836
+ return r;
2837
+ }
2838
+ static inline oneapi::mkl::vm::status
2839
+ logb(const sycl::half* a, sycl::half* y,
2840
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2841
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2842
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2843
+ default:
2844
+ case oneapi::mkl::vm::mode::ha:
2845
+ r = detail::logb(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2846
+ break;
2847
+ case oneapi::mkl::vm::mode::la:
2848
+ r = detail::logb(a, y, oneapi::mkl::vm::device::detail::mode::la);
2849
+ break;
2850
+ case oneapi::mkl::vm::mode::ep:
2851
+ r = detail::logb(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2852
+ break;
2853
+ } // switch
2854
+ return r;
2855
+ }
2856
+ static inline oneapi::mkl::vm::status
2857
+ logb(const float* a, float* y,
2858
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2859
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2860
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2861
+ default:
2862
+ case oneapi::mkl::vm::mode::ha:
2863
+ r = detail::logb(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2864
+ break;
2865
+ case oneapi::mkl::vm::mode::la:
2866
+ r = detail::logb(a, y, oneapi::mkl::vm::device::detail::mode::la);
2867
+ break;
2868
+ case oneapi::mkl::vm::mode::ep:
2869
+ r = detail::logb(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2870
+ break;
2871
+ } // switch
2872
+ return r;
2873
+ }
2874
+ static inline oneapi::mkl::vm::status
2875
+ logb(const double* a, double* y,
2876
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2877
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2878
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2879
+ default:
2880
+ case oneapi::mkl::vm::mode::ha:
2881
+ r = detail::logb(a, y, oneapi::mkl::vm::device::detail::mode::ha);
2882
+ break;
2883
+ case oneapi::mkl::vm::mode::la:
2884
+ r = detail::logb(a, y, oneapi::mkl::vm::device::detail::mode::la);
2885
+ break;
2886
+ case oneapi::mkl::vm::mode::ep:
2887
+ r = detail::logb(a, y, oneapi::mkl::vm::device::detail::mode::ep);
2888
+ break;
2889
+ } // switch
2890
+ return r;
2891
+ }
2892
+ static inline oneapi::mkl::vm::status
2893
+ maxmag(const sycl::half* a, const sycl::half* b, sycl::half* y,
2894
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2895
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2896
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2897
+ default:
2898
+ case oneapi::mkl::vm::mode::ha:
2899
+ r = detail::maxmag(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2900
+ break;
2901
+ case oneapi::mkl::vm::mode::la:
2902
+ r = detail::maxmag(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2903
+ break;
2904
+ case oneapi::mkl::vm::mode::ep:
2905
+ r = detail::maxmag(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2906
+ break;
2907
+ } // switch
2908
+ return r;
2909
+ }
2910
+ static inline oneapi::mkl::vm::status
2911
+ maxmag(const float* a, const float* b, float* y,
2912
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2913
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2914
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2915
+ default:
2916
+ case oneapi::mkl::vm::mode::ha:
2917
+ r = detail::maxmag(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2918
+ break;
2919
+ case oneapi::mkl::vm::mode::la:
2920
+ r = detail::maxmag(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2921
+ break;
2922
+ case oneapi::mkl::vm::mode::ep:
2923
+ r = detail::maxmag(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2924
+ break;
2925
+ } // switch
2926
+ return r;
2927
+ }
2928
+ static inline oneapi::mkl::vm::status
2929
+ maxmag(const double* a, const double* b, double* y,
2930
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2931
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2932
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2933
+ default:
2934
+ case oneapi::mkl::vm::mode::ha:
2935
+ r = detail::maxmag(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2936
+ break;
2937
+ case oneapi::mkl::vm::mode::la:
2938
+ r = detail::maxmag(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2939
+ break;
2940
+ case oneapi::mkl::vm::mode::ep:
2941
+ r = detail::maxmag(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2942
+ break;
2943
+ } // switch
2944
+ return r;
2945
+ }
2946
+ static inline oneapi::mkl::vm::status
2947
+ minmag(const sycl::half* a, const sycl::half* b, sycl::half* y,
2948
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2949
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2950
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2951
+ default:
2952
+ case oneapi::mkl::vm::mode::ha:
2953
+ r = detail::minmag(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2954
+ break;
2955
+ case oneapi::mkl::vm::mode::la:
2956
+ r = detail::minmag(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2957
+ break;
2958
+ case oneapi::mkl::vm::mode::ep:
2959
+ r = detail::minmag(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2960
+ break;
2961
+ } // switch
2962
+ return r;
2963
+ }
2964
+ static inline oneapi::mkl::vm::status
2965
+ minmag(const float* a, const float* b, float* y,
2966
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2967
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2968
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2969
+ default:
2970
+ case oneapi::mkl::vm::mode::ha:
2971
+ r = detail::minmag(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2972
+ break;
2973
+ case oneapi::mkl::vm::mode::la:
2974
+ r = detail::minmag(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2975
+ break;
2976
+ case oneapi::mkl::vm::mode::ep:
2977
+ r = detail::minmag(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2978
+ break;
2979
+ } // switch
2980
+ return r;
2981
+ }
2982
+ static inline oneapi::mkl::vm::status
2983
+ minmag(const double* a, const double* b, double* y,
2984
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
2985
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
2986
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
2987
+ default:
2988
+ case oneapi::mkl::vm::mode::ha:
2989
+ r = detail::minmag(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
2990
+ break;
2991
+ case oneapi::mkl::vm::mode::la:
2992
+ r = detail::minmag(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
2993
+ break;
2994
+ case oneapi::mkl::vm::mode::ep:
2995
+ r = detail::minmag(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
2996
+ break;
2997
+ } // switch
2998
+ return r;
2999
+ }
3000
+ static inline oneapi::mkl::vm::status
3001
+ modf(const sycl::half* a, sycl::half* y, sycl::half* z,
3002
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3003
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3004
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3005
+ default:
3006
+ case oneapi::mkl::vm::mode::ha:
3007
+ r = detail::modf(a, y, z, oneapi::mkl::vm::device::detail::mode::ha);
3008
+ break;
3009
+ case oneapi::mkl::vm::mode::la:
3010
+ r = detail::modf(a, y, z, oneapi::mkl::vm::device::detail::mode::la);
3011
+ break;
3012
+ case oneapi::mkl::vm::mode::ep:
3013
+ r = detail::modf(a, y, z, oneapi::mkl::vm::device::detail::mode::ep);
3014
+ break;
3015
+ } // switch
3016
+ return r;
3017
+ }
3018
+ static inline oneapi::mkl::vm::status
3019
+ modf(const float* a, float* y, float* z,
3020
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3021
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3022
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3023
+ default:
3024
+ case oneapi::mkl::vm::mode::ha:
3025
+ r = detail::modf(a, y, z, oneapi::mkl::vm::device::detail::mode::ha);
3026
+ break;
3027
+ case oneapi::mkl::vm::mode::la:
3028
+ r = detail::modf(a, y, z, oneapi::mkl::vm::device::detail::mode::la);
3029
+ break;
3030
+ case oneapi::mkl::vm::mode::ep:
3031
+ r = detail::modf(a, y, z, oneapi::mkl::vm::device::detail::mode::ep);
3032
+ break;
3033
+ } // switch
3034
+ return r;
3035
+ }
3036
+ static inline oneapi::mkl::vm::status
3037
+ modf(const double* a, double* y, double* z,
3038
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3039
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3040
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3041
+ default:
3042
+ case oneapi::mkl::vm::mode::ha:
3043
+ r = detail::modf(a, y, z, oneapi::mkl::vm::device::detail::mode::ha);
3044
+ break;
3045
+ case oneapi::mkl::vm::mode::la:
3046
+ r = detail::modf(a, y, z, oneapi::mkl::vm::device::detail::mode::la);
3047
+ break;
3048
+ case oneapi::mkl::vm::mode::ep:
3049
+ r = detail::modf(a, y, z, oneapi::mkl::vm::device::detail::mode::ep);
3050
+ break;
3051
+ } // switch
3052
+ return r;
3053
+ }
3054
+ static inline oneapi::mkl::vm::status
3055
+ mul(const sycl::half* a, const sycl::half* b, sycl::half* y,
3056
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3057
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3058
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3059
+ default:
3060
+ case oneapi::mkl::vm::mode::ha:
3061
+ r = detail::mul(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3062
+ break;
3063
+ case oneapi::mkl::vm::mode::la:
3064
+ r = detail::mul(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3065
+ break;
3066
+ case oneapi::mkl::vm::mode::ep:
3067
+ r = detail::mul(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3068
+ break;
3069
+ } // switch
3070
+ return r;
3071
+ }
3072
+ static inline oneapi::mkl::vm::status
3073
+ mul(const float* a, const float* b, float* y,
3074
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3075
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3076
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3077
+ default:
3078
+ case oneapi::mkl::vm::mode::ha:
3079
+ r = detail::mul(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3080
+ break;
3081
+ case oneapi::mkl::vm::mode::la:
3082
+ r = detail::mul(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3083
+ break;
3084
+ case oneapi::mkl::vm::mode::ep:
3085
+ r = detail::mul(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3086
+ break;
3087
+ } // switch
3088
+ return r;
3089
+ }
3090
+ static inline oneapi::mkl::vm::status
3091
+ mul(const double* a, const double* b, double* y,
3092
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3093
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3094
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3095
+ default:
3096
+ case oneapi::mkl::vm::mode::ha:
3097
+ r = detail::mul(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3098
+ break;
3099
+ case oneapi::mkl::vm::mode::la:
3100
+ r = detail::mul(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3101
+ break;
3102
+ case oneapi::mkl::vm::mode::ep:
3103
+ r = detail::mul(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3104
+ break;
3105
+ } // switch
3106
+ return r;
3107
+ }
3108
+ static inline oneapi::mkl::vm::status
3109
+ mul(const std::complex<float>* a, const std::complex<float>* b,
3110
+ std::complex<float>* y,
3111
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3112
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3113
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3114
+ default:
3115
+ case oneapi::mkl::vm::mode::ha:
3116
+ r = detail::mul(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3117
+ break;
3118
+ case oneapi::mkl::vm::mode::la:
3119
+ r = detail::mul(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3120
+ break;
3121
+ case oneapi::mkl::vm::mode::ep:
3122
+ r = detail::mul(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3123
+ break;
3124
+ } // switch
3125
+ return r;
3126
+ }
3127
+ static inline oneapi::mkl::vm::status
3128
+ mul(const std::complex<double>* a, const std::complex<double>* b,
3129
+ std::complex<double>* y,
3130
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3131
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3132
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3133
+ default:
3134
+ case oneapi::mkl::vm::mode::ha:
3135
+ r = detail::mul(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3136
+ break;
3137
+ case oneapi::mkl::vm::mode::la:
3138
+ r = detail::mul(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3139
+ break;
3140
+ case oneapi::mkl::vm::mode::ep:
3141
+ r = detail::mul(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3142
+ break;
3143
+ } // switch
3144
+ return r;
3145
+ }
3146
+ static inline oneapi::mkl::vm::status
3147
+ mulbyconj(const std::complex<float>* a, const std::complex<float>* b,
3148
+ std::complex<float>* y,
3149
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3150
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3151
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3152
+ default:
3153
+ case oneapi::mkl::vm::mode::ha:
3154
+ r = detail::mulbyconj(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3155
+ break;
3156
+ case oneapi::mkl::vm::mode::la:
3157
+ r = detail::mulbyconj(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3158
+ break;
3159
+ case oneapi::mkl::vm::mode::ep:
3160
+ r = detail::mulbyconj(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3161
+ break;
3162
+ } // switch
3163
+ return r;
3164
+ }
3165
+ static inline oneapi::mkl::vm::status
3166
+ mulbyconj(const std::complex<double>* a, const std::complex<double>* b,
3167
+ std::complex<double>* y,
3168
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3169
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3170
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3171
+ default:
3172
+ case oneapi::mkl::vm::mode::ha:
3173
+ r = detail::mulbyconj(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3174
+ break;
3175
+ case oneapi::mkl::vm::mode::la:
3176
+ r = detail::mulbyconj(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3177
+ break;
3178
+ case oneapi::mkl::vm::mode::ep:
3179
+ r = detail::mulbyconj(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3180
+ break;
3181
+ } // switch
3182
+ return r;
3183
+ }
3184
+ static inline oneapi::mkl::vm::status
3185
+ nearbyint(const sycl::half* a, sycl::half* y,
3186
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3187
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3188
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3189
+ default:
3190
+ case oneapi::mkl::vm::mode::ha:
3191
+ r = detail::nearbyint(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3192
+ break;
3193
+ case oneapi::mkl::vm::mode::la:
3194
+ r = detail::nearbyint(a, y, oneapi::mkl::vm::device::detail::mode::la);
3195
+ break;
3196
+ case oneapi::mkl::vm::mode::ep:
3197
+ r = detail::nearbyint(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3198
+ break;
3199
+ } // switch
3200
+ return r;
3201
+ }
3202
+ static inline oneapi::mkl::vm::status
3203
+ nearbyint(const float* a, float* y,
3204
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3205
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3206
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3207
+ default:
3208
+ case oneapi::mkl::vm::mode::ha:
3209
+ r = detail::nearbyint(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3210
+ break;
3211
+ case oneapi::mkl::vm::mode::la:
3212
+ r = detail::nearbyint(a, y, oneapi::mkl::vm::device::detail::mode::la);
3213
+ break;
3214
+ case oneapi::mkl::vm::mode::ep:
3215
+ r = detail::nearbyint(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3216
+ break;
3217
+ } // switch
3218
+ return r;
3219
+ }
3220
+ static inline oneapi::mkl::vm::status
3221
+ nearbyint(const double* a, double* y,
3222
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3223
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3224
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3225
+ default:
3226
+ case oneapi::mkl::vm::mode::ha:
3227
+ r = detail::nearbyint(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3228
+ break;
3229
+ case oneapi::mkl::vm::mode::la:
3230
+ r = detail::nearbyint(a, y, oneapi::mkl::vm::device::detail::mode::la);
3231
+ break;
3232
+ case oneapi::mkl::vm::mode::ep:
3233
+ r = detail::nearbyint(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3234
+ break;
3235
+ } // switch
3236
+ return r;
3237
+ }
3238
+ static inline oneapi::mkl::vm::status
3239
+ nextafter(const sycl::half* a, const sycl::half* b, sycl::half* y,
3240
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3241
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3242
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3243
+ default:
3244
+ case oneapi::mkl::vm::mode::ha:
3245
+ r = detail::nextafter(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3246
+ break;
3247
+ case oneapi::mkl::vm::mode::la:
3248
+ r = detail::nextafter(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3249
+ break;
3250
+ case oneapi::mkl::vm::mode::ep:
3251
+ r = detail::nextafter(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3252
+ break;
3253
+ } // switch
3254
+ return r;
3255
+ }
3256
+ static inline oneapi::mkl::vm::status
3257
+ nextafter(const float* a, const float* b, float* y,
3258
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3259
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3260
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3261
+ default:
3262
+ case oneapi::mkl::vm::mode::ha:
3263
+ r = detail::nextafter(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3264
+ break;
3265
+ case oneapi::mkl::vm::mode::la:
3266
+ r = detail::nextafter(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3267
+ break;
3268
+ case oneapi::mkl::vm::mode::ep:
3269
+ r = detail::nextafter(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3270
+ break;
3271
+ } // switch
3272
+ return r;
3273
+ }
3274
+ static inline oneapi::mkl::vm::status
3275
+ nextafter(const double* a, const double* b, double* y,
3276
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3277
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3278
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3279
+ default:
3280
+ case oneapi::mkl::vm::mode::ha:
3281
+ r = detail::nextafter(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3282
+ break;
3283
+ case oneapi::mkl::vm::mode::la:
3284
+ r = detail::nextafter(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3285
+ break;
3286
+ case oneapi::mkl::vm::mode::ep:
3287
+ r = detail::nextafter(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3288
+ break;
3289
+ } // switch
3290
+ return r;
3291
+ }
3292
+ static inline oneapi::mkl::vm::status
3293
+ pow(const sycl::half* a, const sycl::half* b, sycl::half* y,
3294
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3295
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3296
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3297
+ default:
3298
+ case oneapi::mkl::vm::mode::ha:
3299
+ r = detail::pow(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3300
+ break;
3301
+ case oneapi::mkl::vm::mode::la:
3302
+ r = detail::pow(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3303
+ break;
3304
+ case oneapi::mkl::vm::mode::ep:
3305
+ r = detail::pow(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3306
+ break;
3307
+ } // switch
3308
+ return r;
3309
+ }
3310
+ static inline oneapi::mkl::vm::status
3311
+ pow(const float* a, const float* b, float* y,
3312
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3313
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3314
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3315
+ default:
3316
+ case oneapi::mkl::vm::mode::ha:
3317
+ r = detail::pow(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3318
+ break;
3319
+ case oneapi::mkl::vm::mode::la:
3320
+ r = detail::pow(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3321
+ break;
3322
+ case oneapi::mkl::vm::mode::ep:
3323
+ r = detail::pow(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3324
+ break;
3325
+ } // switch
3326
+ return r;
3327
+ }
3328
+ static inline oneapi::mkl::vm::status
3329
+ pow(const double* a, const double* b, double* y,
3330
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3331
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3332
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3333
+ default:
3334
+ case oneapi::mkl::vm::mode::ha:
3335
+ r = detail::pow(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3336
+ break;
3337
+ case oneapi::mkl::vm::mode::la:
3338
+ r = detail::pow(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3339
+ break;
3340
+ case oneapi::mkl::vm::mode::ep:
3341
+ r = detail::pow(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3342
+ break;
3343
+ } // switch
3344
+ return r;
3345
+ }
3346
+ static inline oneapi::mkl::vm::status
3347
+ pow2o3(const sycl::half* a, sycl::half* y,
3348
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3349
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3350
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3351
+ default:
3352
+ case oneapi::mkl::vm::mode::ha:
3353
+ r = detail::pow2o3(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3354
+ break;
3355
+ case oneapi::mkl::vm::mode::la:
3356
+ r = detail::pow2o3(a, y, oneapi::mkl::vm::device::detail::mode::la);
3357
+ break;
3358
+ case oneapi::mkl::vm::mode::ep:
3359
+ r = detail::pow2o3(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3360
+ break;
3361
+ } // switch
3362
+ return r;
3363
+ }
3364
+ static inline oneapi::mkl::vm::status
3365
+ pow2o3(const float* a, float* y,
3366
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3367
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3368
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3369
+ default:
3370
+ case oneapi::mkl::vm::mode::ha:
3371
+ r = detail::pow2o3(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3372
+ break;
3373
+ case oneapi::mkl::vm::mode::la:
3374
+ r = detail::pow2o3(a, y, oneapi::mkl::vm::device::detail::mode::la);
3375
+ break;
3376
+ case oneapi::mkl::vm::mode::ep:
3377
+ r = detail::pow2o3(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3378
+ break;
3379
+ } // switch
3380
+ return r;
3381
+ }
3382
+ static inline oneapi::mkl::vm::status
3383
+ pow2o3(const double* a, double* y,
3384
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3385
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3386
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3387
+ default:
3388
+ case oneapi::mkl::vm::mode::ha:
3389
+ r = detail::pow2o3(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3390
+ break;
3391
+ case oneapi::mkl::vm::mode::la:
3392
+ r = detail::pow2o3(a, y, oneapi::mkl::vm::device::detail::mode::la);
3393
+ break;
3394
+ case oneapi::mkl::vm::mode::ep:
3395
+ r = detail::pow2o3(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3396
+ break;
3397
+ } // switch
3398
+ return r;
3399
+ }
3400
+ static inline oneapi::mkl::vm::status
3401
+ pow3o2(const sycl::half* a, sycl::half* y,
3402
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3403
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3404
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3405
+ default:
3406
+ case oneapi::mkl::vm::mode::ha:
3407
+ r = detail::pow3o2(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3408
+ break;
3409
+ case oneapi::mkl::vm::mode::la:
3410
+ r = detail::pow3o2(a, y, oneapi::mkl::vm::device::detail::mode::la);
3411
+ break;
3412
+ case oneapi::mkl::vm::mode::ep:
3413
+ r = detail::pow3o2(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3414
+ break;
3415
+ } // switch
3416
+ return r;
3417
+ }
3418
+ static inline oneapi::mkl::vm::status
3419
+ pow3o2(const float* a, float* y,
3420
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3421
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3422
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3423
+ default:
3424
+ case oneapi::mkl::vm::mode::ha:
3425
+ r = detail::pow3o2(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3426
+ break;
3427
+ case oneapi::mkl::vm::mode::la:
3428
+ r = detail::pow3o2(a, y, oneapi::mkl::vm::device::detail::mode::la);
3429
+ break;
3430
+ case oneapi::mkl::vm::mode::ep:
3431
+ r = detail::pow3o2(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3432
+ break;
3433
+ } // switch
3434
+ return r;
3435
+ }
3436
+ static inline oneapi::mkl::vm::status
3437
+ pow3o2(const double* a, double* y,
3438
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3439
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3440
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3441
+ default:
3442
+ case oneapi::mkl::vm::mode::ha:
3443
+ r = detail::pow3o2(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3444
+ break;
3445
+ case oneapi::mkl::vm::mode::la:
3446
+ r = detail::pow3o2(a, y, oneapi::mkl::vm::device::detail::mode::la);
3447
+ break;
3448
+ case oneapi::mkl::vm::mode::ep:
3449
+ r = detail::pow3o2(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3450
+ break;
3451
+ } // switch
3452
+ return r;
3453
+ }
3454
+ static inline oneapi::mkl::vm::status
3455
+ powr(const sycl::half* a, const sycl::half* b, sycl::half* y,
3456
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3457
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3458
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3459
+ default:
3460
+ case oneapi::mkl::vm::mode::ha:
3461
+ r = detail::powr(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3462
+ break;
3463
+ case oneapi::mkl::vm::mode::la:
3464
+ r = detail::powr(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3465
+ break;
3466
+ case oneapi::mkl::vm::mode::ep:
3467
+ r = detail::powr(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3468
+ break;
3469
+ } // switch
3470
+ return r;
3471
+ }
3472
+ static inline oneapi::mkl::vm::status
3473
+ powr(const float* a, const float* b, float* y,
3474
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3475
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3476
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3477
+ default:
3478
+ case oneapi::mkl::vm::mode::ha:
3479
+ r = detail::powr(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3480
+ break;
3481
+ case oneapi::mkl::vm::mode::la:
3482
+ r = detail::powr(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3483
+ break;
3484
+ case oneapi::mkl::vm::mode::ep:
3485
+ r = detail::powr(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3486
+ break;
3487
+ } // switch
3488
+ return r;
3489
+ }
3490
+ static inline oneapi::mkl::vm::status
3491
+ powr(const double* a, const double* b, double* y,
3492
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3493
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3494
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3495
+ default:
3496
+ case oneapi::mkl::vm::mode::ha:
3497
+ r = detail::powr(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3498
+ break;
3499
+ case oneapi::mkl::vm::mode::la:
3500
+ r = detail::powr(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3501
+ break;
3502
+ case oneapi::mkl::vm::mode::ep:
3503
+ r = detail::powr(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3504
+ break;
3505
+ } // switch
3506
+ return r;
3507
+ }
3508
+ static inline oneapi::mkl::vm::status
3509
+ powx(const sycl::half* a, sycl::half b, sycl::half* y,
3510
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3511
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3512
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3513
+ default:
3514
+ case oneapi::mkl::vm::mode::ha:
3515
+ r = detail::powx(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3516
+ break;
3517
+ case oneapi::mkl::vm::mode::la:
3518
+ r = detail::powx(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3519
+ break;
3520
+ case oneapi::mkl::vm::mode::ep:
3521
+ r = detail::powx(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3522
+ break;
3523
+ } // switch
3524
+ return r;
3525
+ }
3526
+ static inline oneapi::mkl::vm::status
3527
+ powx(const float* a, float b, float* y,
3528
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3529
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3530
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3531
+ default:
3532
+ case oneapi::mkl::vm::mode::ha:
3533
+ r = detail::powx(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3534
+ break;
3535
+ case oneapi::mkl::vm::mode::la:
3536
+ r = detail::powx(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3537
+ break;
3538
+ case oneapi::mkl::vm::mode::ep:
3539
+ r = detail::powx(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3540
+ break;
3541
+ } // switch
3542
+ return r;
3543
+ }
3544
+ static inline oneapi::mkl::vm::status
3545
+ powx(const double* a, double b, double* y,
3546
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3547
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3548
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3549
+ default:
3550
+ case oneapi::mkl::vm::mode::ha:
3551
+ r = detail::powx(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3552
+ break;
3553
+ case oneapi::mkl::vm::mode::la:
3554
+ r = detail::powx(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3555
+ break;
3556
+ case oneapi::mkl::vm::mode::ep:
3557
+ r = detail::powx(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3558
+ break;
3559
+ } // switch
3560
+ return r;
3561
+ }
3562
+ static inline oneapi::mkl::vm::status
3563
+ remainder(const sycl::half* a, const sycl::half* b, sycl::half* y,
3564
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3565
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3566
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3567
+ default:
3568
+ case oneapi::mkl::vm::mode::ha:
3569
+ r = detail::remainder(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3570
+ break;
3571
+ case oneapi::mkl::vm::mode::la:
3572
+ r = detail::remainder(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3573
+ break;
3574
+ case oneapi::mkl::vm::mode::ep:
3575
+ r = detail::remainder(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3576
+ break;
3577
+ } // switch
3578
+ return r;
3579
+ }
3580
+ static inline oneapi::mkl::vm::status
3581
+ remainder(const float* a, const float* b, float* y,
3582
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3583
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3584
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3585
+ default:
3586
+ case oneapi::mkl::vm::mode::ha:
3587
+ r = detail::remainder(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3588
+ break;
3589
+ case oneapi::mkl::vm::mode::la:
3590
+ r = detail::remainder(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3591
+ break;
3592
+ case oneapi::mkl::vm::mode::ep:
3593
+ r = detail::remainder(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3594
+ break;
3595
+ } // switch
3596
+ return r;
3597
+ }
3598
+ static inline oneapi::mkl::vm::status
3599
+ remainder(const double* a, const double* b, double* y,
3600
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3601
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3602
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3603
+ default:
3604
+ case oneapi::mkl::vm::mode::ha:
3605
+ r = detail::remainder(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
3606
+ break;
3607
+ case oneapi::mkl::vm::mode::la:
3608
+ r = detail::remainder(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
3609
+ break;
3610
+ case oneapi::mkl::vm::mode::ep:
3611
+ r = detail::remainder(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
3612
+ break;
3613
+ } // switch
3614
+ return r;
3615
+ }
3616
+ static inline oneapi::mkl::vm::status
3617
+ rint(const sycl::half* a, sycl::half* y,
3618
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3619
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3620
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3621
+ default:
3622
+ case oneapi::mkl::vm::mode::ha:
3623
+ r = detail::rint(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3624
+ break;
3625
+ case oneapi::mkl::vm::mode::la:
3626
+ r = detail::rint(a, y, oneapi::mkl::vm::device::detail::mode::la);
3627
+ break;
3628
+ case oneapi::mkl::vm::mode::ep:
3629
+ r = detail::rint(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3630
+ break;
3631
+ } // switch
3632
+ return r;
3633
+ }
3634
+ static inline oneapi::mkl::vm::status
3635
+ rint(const float* a, float* y,
3636
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3637
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3638
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3639
+ default:
3640
+ case oneapi::mkl::vm::mode::ha:
3641
+ r = detail::rint(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3642
+ break;
3643
+ case oneapi::mkl::vm::mode::la:
3644
+ r = detail::rint(a, y, oneapi::mkl::vm::device::detail::mode::la);
3645
+ break;
3646
+ case oneapi::mkl::vm::mode::ep:
3647
+ r = detail::rint(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3648
+ break;
3649
+ } // switch
3650
+ return r;
3651
+ }
3652
+ static inline oneapi::mkl::vm::status
3653
+ rint(const double* a, double* y,
3654
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3655
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3656
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3657
+ default:
3658
+ case oneapi::mkl::vm::mode::ha:
3659
+ r = detail::rint(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3660
+ break;
3661
+ case oneapi::mkl::vm::mode::la:
3662
+ r = detail::rint(a, y, oneapi::mkl::vm::device::detail::mode::la);
3663
+ break;
3664
+ case oneapi::mkl::vm::mode::ep:
3665
+ r = detail::rint(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3666
+ break;
3667
+ } // switch
3668
+ return r;
3669
+ }
3670
+ static inline oneapi::mkl::vm::status
3671
+ round(const sycl::half* a, sycl::half* y,
3672
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3673
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3674
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3675
+ default:
3676
+ case oneapi::mkl::vm::mode::ha:
3677
+ r = detail::round(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3678
+ break;
3679
+ case oneapi::mkl::vm::mode::la:
3680
+ r = detail::round(a, y, oneapi::mkl::vm::device::detail::mode::la);
3681
+ break;
3682
+ case oneapi::mkl::vm::mode::ep:
3683
+ r = detail::round(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3684
+ break;
3685
+ } // switch
3686
+ return r;
3687
+ }
3688
+ static inline oneapi::mkl::vm::status
3689
+ round(const float* a, float* y,
3690
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3691
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3692
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3693
+ default:
3694
+ case oneapi::mkl::vm::mode::ha:
3695
+ r = detail::round(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3696
+ break;
3697
+ case oneapi::mkl::vm::mode::la:
3698
+ r = detail::round(a, y, oneapi::mkl::vm::device::detail::mode::la);
3699
+ break;
3700
+ case oneapi::mkl::vm::mode::ep:
3701
+ r = detail::round(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3702
+ break;
3703
+ } // switch
3704
+ return r;
3705
+ }
3706
+ static inline oneapi::mkl::vm::status
3707
+ round(const double* a, double* y,
3708
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3709
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3710
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3711
+ default:
3712
+ case oneapi::mkl::vm::mode::ha:
3713
+ r = detail::round(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3714
+ break;
3715
+ case oneapi::mkl::vm::mode::la:
3716
+ r = detail::round(a, y, oneapi::mkl::vm::device::detail::mode::la);
3717
+ break;
3718
+ case oneapi::mkl::vm::mode::ep:
3719
+ r = detail::round(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3720
+ break;
3721
+ } // switch
3722
+ return r;
3723
+ }
3724
+ static inline oneapi::mkl::vm::status
3725
+ sin(const sycl::half* a, sycl::half* y,
3726
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3727
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3728
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3729
+ default:
3730
+ case oneapi::mkl::vm::mode::ha:
3731
+ r = detail::sin(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3732
+ break;
3733
+ case oneapi::mkl::vm::mode::la:
3734
+ r = detail::sin(a, y, oneapi::mkl::vm::device::detail::mode::la);
3735
+ break;
3736
+ case oneapi::mkl::vm::mode::ep:
3737
+ r = detail::sin(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3738
+ break;
3739
+ } // switch
3740
+ return r;
3741
+ }
3742
+ static inline oneapi::mkl::vm::status
3743
+ sin(const float* a, float* y,
3744
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3745
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3746
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3747
+ default:
3748
+ case oneapi::mkl::vm::mode::ha:
3749
+ r = detail::sin(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3750
+ break;
3751
+ case oneapi::mkl::vm::mode::la:
3752
+ r = detail::sin(a, y, oneapi::mkl::vm::device::detail::mode::la);
3753
+ break;
3754
+ case oneapi::mkl::vm::mode::ep:
3755
+ r = detail::sin(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3756
+ break;
3757
+ } // switch
3758
+ return r;
3759
+ }
3760
+ static inline oneapi::mkl::vm::status
3761
+ sin(const double* a, double* y,
3762
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3763
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3764
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3765
+ default:
3766
+ case oneapi::mkl::vm::mode::ha:
3767
+ r = detail::sin(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3768
+ break;
3769
+ case oneapi::mkl::vm::mode::la:
3770
+ r = detail::sin(a, y, oneapi::mkl::vm::device::detail::mode::la);
3771
+ break;
3772
+ case oneapi::mkl::vm::mode::ep:
3773
+ r = detail::sin(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3774
+ break;
3775
+ } // switch
3776
+ return r;
3777
+ }
3778
+ static inline oneapi::mkl::vm::status
3779
+ sincos(const sycl::half* a, sycl::half* y, sycl::half* z,
3780
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3781
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3782
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3783
+ default:
3784
+ case oneapi::mkl::vm::mode::ha:
3785
+ r = detail::sincos(a, y, z, oneapi::mkl::vm::device::detail::mode::ha);
3786
+ break;
3787
+ case oneapi::mkl::vm::mode::la:
3788
+ r = detail::sincos(a, y, z, oneapi::mkl::vm::device::detail::mode::la);
3789
+ break;
3790
+ case oneapi::mkl::vm::mode::ep:
3791
+ r = detail::sincos(a, y, z, oneapi::mkl::vm::device::detail::mode::ep);
3792
+ break;
3793
+ } // switch
3794
+ return r;
3795
+ }
3796
+ static inline oneapi::mkl::vm::status
3797
+ sincos(const float* a, float* y, float* z,
3798
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3799
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3800
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3801
+ default:
3802
+ case oneapi::mkl::vm::mode::ha:
3803
+ r = detail::sincos(a, y, z, oneapi::mkl::vm::device::detail::mode::ha);
3804
+ break;
3805
+ case oneapi::mkl::vm::mode::la:
3806
+ r = detail::sincos(a, y, z, oneapi::mkl::vm::device::detail::mode::la);
3807
+ break;
3808
+ case oneapi::mkl::vm::mode::ep:
3809
+ r = detail::sincos(a, y, z, oneapi::mkl::vm::device::detail::mode::ep);
3810
+ break;
3811
+ } // switch
3812
+ return r;
3813
+ }
3814
+ static inline oneapi::mkl::vm::status
3815
+ sincos(const double* a, double* y, double* z,
3816
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3817
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3818
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3819
+ default:
3820
+ case oneapi::mkl::vm::mode::ha:
3821
+ r = detail::sincos(a, y, z, oneapi::mkl::vm::device::detail::mode::ha);
3822
+ break;
3823
+ case oneapi::mkl::vm::mode::la:
3824
+ r = detail::sincos(a, y, z, oneapi::mkl::vm::device::detail::mode::la);
3825
+ break;
3826
+ case oneapi::mkl::vm::mode::ep:
3827
+ r = detail::sincos(a, y, z, oneapi::mkl::vm::device::detail::mode::ep);
3828
+ break;
3829
+ } // switch
3830
+ return r;
3831
+ }
3832
+ static inline oneapi::mkl::vm::status
3833
+ sincospi(const sycl::half* a, sycl::half* y, sycl::half* z,
3834
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3835
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3836
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3837
+ default:
3838
+ case oneapi::mkl::vm::mode::ha:
3839
+ r = detail::sincospi(a, y, z, oneapi::mkl::vm::device::detail::mode::ha);
3840
+ break;
3841
+ case oneapi::mkl::vm::mode::la:
3842
+ r = detail::sincospi(a, y, z, oneapi::mkl::vm::device::detail::mode::la);
3843
+ break;
3844
+ case oneapi::mkl::vm::mode::ep:
3845
+ r = detail::sincospi(a, y, z, oneapi::mkl::vm::device::detail::mode::ep);
3846
+ break;
3847
+ } // switch
3848
+ return r;
3849
+ }
3850
+ static inline oneapi::mkl::vm::status
3851
+ sincospi(const float* a, float* y, float* z,
3852
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3853
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3854
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3855
+ default:
3856
+ case oneapi::mkl::vm::mode::ha:
3857
+ r = detail::sincospi(a, y, z, oneapi::mkl::vm::device::detail::mode::ha);
3858
+ break;
3859
+ case oneapi::mkl::vm::mode::la:
3860
+ r = detail::sincospi(a, y, z, oneapi::mkl::vm::device::detail::mode::la);
3861
+ break;
3862
+ case oneapi::mkl::vm::mode::ep:
3863
+ r = detail::sincospi(a, y, z, oneapi::mkl::vm::device::detail::mode::ep);
3864
+ break;
3865
+ } // switch
3866
+ return r;
3867
+ }
3868
+ static inline oneapi::mkl::vm::status
3869
+ sincospi(const double* a, double* y, double* z,
3870
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3871
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3872
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3873
+ default:
3874
+ case oneapi::mkl::vm::mode::ha:
3875
+ r = detail::sincospi(a, y, z, oneapi::mkl::vm::device::detail::mode::ha);
3876
+ break;
3877
+ case oneapi::mkl::vm::mode::la:
3878
+ r = detail::sincospi(a, y, z, oneapi::mkl::vm::device::detail::mode::la);
3879
+ break;
3880
+ case oneapi::mkl::vm::mode::ep:
3881
+ r = detail::sincospi(a, y, z, oneapi::mkl::vm::device::detail::mode::ep);
3882
+ break;
3883
+ } // switch
3884
+ return r;
3885
+ }
3886
+ static inline oneapi::mkl::vm::status
3887
+ sind(const sycl::half* a, sycl::half* y,
3888
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3889
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3890
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3891
+ default:
3892
+ case oneapi::mkl::vm::mode::ha:
3893
+ r = detail::sind(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3894
+ break;
3895
+ case oneapi::mkl::vm::mode::la:
3896
+ r = detail::sind(a, y, oneapi::mkl::vm::device::detail::mode::la);
3897
+ break;
3898
+ case oneapi::mkl::vm::mode::ep:
3899
+ r = detail::sind(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3900
+ break;
3901
+ } // switch
3902
+ return r;
3903
+ }
3904
+ static inline oneapi::mkl::vm::status
3905
+ sind(const float* a, float* y,
3906
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3907
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3908
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3909
+ default:
3910
+ case oneapi::mkl::vm::mode::ha:
3911
+ r = detail::sind(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3912
+ break;
3913
+ case oneapi::mkl::vm::mode::la:
3914
+ r = detail::sind(a, y, oneapi::mkl::vm::device::detail::mode::la);
3915
+ break;
3916
+ case oneapi::mkl::vm::mode::ep:
3917
+ r = detail::sind(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3918
+ break;
3919
+ } // switch
3920
+ return r;
3921
+ }
3922
+ static inline oneapi::mkl::vm::status
3923
+ sind(const double* a, double* y,
3924
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3925
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3926
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3927
+ default:
3928
+ case oneapi::mkl::vm::mode::ha:
3929
+ r = detail::sind(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3930
+ break;
3931
+ case oneapi::mkl::vm::mode::la:
3932
+ r = detail::sind(a, y, oneapi::mkl::vm::device::detail::mode::la);
3933
+ break;
3934
+ case oneapi::mkl::vm::mode::ep:
3935
+ r = detail::sind(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3936
+ break;
3937
+ } // switch
3938
+ return r;
3939
+ }
3940
+ static inline oneapi::mkl::vm::status
3941
+ sinh(const sycl::half* a, sycl::half* y,
3942
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3943
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3944
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3945
+ default:
3946
+ case oneapi::mkl::vm::mode::ha:
3947
+ r = detail::sinh(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3948
+ break;
3949
+ case oneapi::mkl::vm::mode::la:
3950
+ r = detail::sinh(a, y, oneapi::mkl::vm::device::detail::mode::la);
3951
+ break;
3952
+ case oneapi::mkl::vm::mode::ep:
3953
+ r = detail::sinh(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3954
+ break;
3955
+ } // switch
3956
+ return r;
3957
+ }
3958
+ static inline oneapi::mkl::vm::status
3959
+ sinh(const float* a, float* y,
3960
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3961
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3962
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3963
+ default:
3964
+ case oneapi::mkl::vm::mode::ha:
3965
+ r = detail::sinh(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3966
+ break;
3967
+ case oneapi::mkl::vm::mode::la:
3968
+ r = detail::sinh(a, y, oneapi::mkl::vm::device::detail::mode::la);
3969
+ break;
3970
+ case oneapi::mkl::vm::mode::ep:
3971
+ r = detail::sinh(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3972
+ break;
3973
+ } // switch
3974
+ return r;
3975
+ }
3976
+ static inline oneapi::mkl::vm::status
3977
+ sinh(const double* a, double* y,
3978
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3979
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3980
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3981
+ default:
3982
+ case oneapi::mkl::vm::mode::ha:
3983
+ r = detail::sinh(a, y, oneapi::mkl::vm::device::detail::mode::ha);
3984
+ break;
3985
+ case oneapi::mkl::vm::mode::la:
3986
+ r = detail::sinh(a, y, oneapi::mkl::vm::device::detail::mode::la);
3987
+ break;
3988
+ case oneapi::mkl::vm::mode::ep:
3989
+ r = detail::sinh(a, y, oneapi::mkl::vm::device::detail::mode::ep);
3990
+ break;
3991
+ } // switch
3992
+ return r;
3993
+ }
3994
+ static inline oneapi::mkl::vm::status
3995
+ sinpi(const sycl::half* a, sycl::half* y,
3996
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
3997
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
3998
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
3999
+ default:
4000
+ case oneapi::mkl::vm::mode::ha:
4001
+ r = detail::sinpi(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4002
+ break;
4003
+ case oneapi::mkl::vm::mode::la:
4004
+ r = detail::sinpi(a, y, oneapi::mkl::vm::device::detail::mode::la);
4005
+ break;
4006
+ case oneapi::mkl::vm::mode::ep:
4007
+ r = detail::sinpi(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4008
+ break;
4009
+ } // switch
4010
+ return r;
4011
+ }
4012
+ static inline oneapi::mkl::vm::status
4013
+ sinpi(const float* a, float* y,
4014
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4015
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4016
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4017
+ default:
4018
+ case oneapi::mkl::vm::mode::ha:
4019
+ r = detail::sinpi(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4020
+ break;
4021
+ case oneapi::mkl::vm::mode::la:
4022
+ r = detail::sinpi(a, y, oneapi::mkl::vm::device::detail::mode::la);
4023
+ break;
4024
+ case oneapi::mkl::vm::mode::ep:
4025
+ r = detail::sinpi(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4026
+ break;
4027
+ } // switch
4028
+ return r;
4029
+ }
4030
+ static inline oneapi::mkl::vm::status
4031
+ sinpi(const double* a, double* y,
4032
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4033
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4034
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4035
+ default:
4036
+ case oneapi::mkl::vm::mode::ha:
4037
+ r = detail::sinpi(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4038
+ break;
4039
+ case oneapi::mkl::vm::mode::la:
4040
+ r = detail::sinpi(a, y, oneapi::mkl::vm::device::detail::mode::la);
4041
+ break;
4042
+ case oneapi::mkl::vm::mode::ep:
4043
+ r = detail::sinpi(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4044
+ break;
4045
+ } // switch
4046
+ return r;
4047
+ }
4048
+ static inline oneapi::mkl::vm::status
4049
+ sqr(const sycl::half* a, sycl::half* y,
4050
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4051
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4052
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4053
+ default:
4054
+ case oneapi::mkl::vm::mode::ha:
4055
+ r = detail::sqr(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4056
+ break;
4057
+ case oneapi::mkl::vm::mode::la:
4058
+ r = detail::sqr(a, y, oneapi::mkl::vm::device::detail::mode::la);
4059
+ break;
4060
+ case oneapi::mkl::vm::mode::ep:
4061
+ r = detail::sqr(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4062
+ break;
4063
+ } // switch
4064
+ return r;
4065
+ }
4066
+ static inline oneapi::mkl::vm::status
4067
+ sqr(const float* a, float* y,
4068
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4069
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4070
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4071
+ default:
4072
+ case oneapi::mkl::vm::mode::ha:
4073
+ r = detail::sqr(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4074
+ break;
4075
+ case oneapi::mkl::vm::mode::la:
4076
+ r = detail::sqr(a, y, oneapi::mkl::vm::device::detail::mode::la);
4077
+ break;
4078
+ case oneapi::mkl::vm::mode::ep:
4079
+ r = detail::sqr(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4080
+ break;
4081
+ } // switch
4082
+ return r;
4083
+ }
4084
+ static inline oneapi::mkl::vm::status
4085
+ sqr(const double* a, double* y,
4086
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4087
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4088
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4089
+ default:
4090
+ case oneapi::mkl::vm::mode::ha:
4091
+ r = detail::sqr(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4092
+ break;
4093
+ case oneapi::mkl::vm::mode::la:
4094
+ r = detail::sqr(a, y, oneapi::mkl::vm::device::detail::mode::la);
4095
+ break;
4096
+ case oneapi::mkl::vm::mode::ep:
4097
+ r = detail::sqr(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4098
+ break;
4099
+ } // switch
4100
+ return r;
4101
+ }
4102
+ static inline oneapi::mkl::vm::status
4103
+ sqrt(const sycl::half* a, sycl::half* y,
4104
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4105
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4106
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4107
+ default:
4108
+ case oneapi::mkl::vm::mode::ha:
4109
+ r = detail::sqrt(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4110
+ break;
4111
+ case oneapi::mkl::vm::mode::la:
4112
+ r = detail::sqrt(a, y, oneapi::mkl::vm::device::detail::mode::la);
4113
+ break;
4114
+ case oneapi::mkl::vm::mode::ep:
4115
+ r = detail::sqrt(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4116
+ break;
4117
+ } // switch
4118
+ return r;
4119
+ }
4120
+ static inline oneapi::mkl::vm::status
4121
+ sqrt(const float* a, float* y,
4122
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4123
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4124
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4125
+ default:
4126
+ case oneapi::mkl::vm::mode::ha:
4127
+ r = detail::sqrt(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4128
+ break;
4129
+ case oneapi::mkl::vm::mode::la:
4130
+ r = detail::sqrt(a, y, oneapi::mkl::vm::device::detail::mode::la);
4131
+ break;
4132
+ case oneapi::mkl::vm::mode::ep:
4133
+ r = detail::sqrt(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4134
+ break;
4135
+ } // switch
4136
+ return r;
4137
+ }
4138
+ static inline oneapi::mkl::vm::status
4139
+ sqrt(const double* a, double* y,
4140
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4141
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4142
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4143
+ default:
4144
+ case oneapi::mkl::vm::mode::ha:
4145
+ r = detail::sqrt(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4146
+ break;
4147
+ case oneapi::mkl::vm::mode::la:
4148
+ r = detail::sqrt(a, y, oneapi::mkl::vm::device::detail::mode::la);
4149
+ break;
4150
+ case oneapi::mkl::vm::mode::ep:
4151
+ r = detail::sqrt(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4152
+ break;
4153
+ } // switch
4154
+ return r;
4155
+ }
4156
+ static inline oneapi::mkl::vm::status
4157
+ sqrt(const std::complex<float>* a, std::complex<float>* y,
4158
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4159
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4160
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4161
+ default:
4162
+ case oneapi::mkl::vm::mode::ha:
4163
+ r = detail::sqrt(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4164
+ break;
4165
+ case oneapi::mkl::vm::mode::la:
4166
+ r = detail::sqrt(a, y, oneapi::mkl::vm::device::detail::mode::la);
4167
+ break;
4168
+ case oneapi::mkl::vm::mode::ep:
4169
+ r = detail::sqrt(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4170
+ break;
4171
+ } // switch
4172
+ return r;
4173
+ }
4174
+ static inline oneapi::mkl::vm::status
4175
+ sqrt(const std::complex<double>* a, std::complex<double>* y,
4176
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4177
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4178
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4179
+ default:
4180
+ case oneapi::mkl::vm::mode::ha:
4181
+ r = detail::sqrt(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4182
+ break;
4183
+ case oneapi::mkl::vm::mode::la:
4184
+ r = detail::sqrt(a, y, oneapi::mkl::vm::device::detail::mode::la);
4185
+ break;
4186
+ case oneapi::mkl::vm::mode::ep:
4187
+ r = detail::sqrt(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4188
+ break;
4189
+ } // switch
4190
+ return r;
4191
+ }
4192
+ static inline oneapi::mkl::vm::status
4193
+ sub(const sycl::half* a, const sycl::half* b, sycl::half* y,
4194
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4195
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4196
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4197
+ default:
4198
+ case oneapi::mkl::vm::mode::ha:
4199
+ r = detail::sub(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
4200
+ break;
4201
+ case oneapi::mkl::vm::mode::la:
4202
+ r = detail::sub(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
4203
+ break;
4204
+ case oneapi::mkl::vm::mode::ep:
4205
+ r = detail::sub(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
4206
+ break;
4207
+ } // switch
4208
+ return r;
4209
+ }
4210
+ static inline oneapi::mkl::vm::status
4211
+ sub(const float* a, const float* b, float* y,
4212
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4213
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4214
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4215
+ default:
4216
+ case oneapi::mkl::vm::mode::ha:
4217
+ r = detail::sub(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
4218
+ break;
4219
+ case oneapi::mkl::vm::mode::la:
4220
+ r = detail::sub(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
4221
+ break;
4222
+ case oneapi::mkl::vm::mode::ep:
4223
+ r = detail::sub(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
4224
+ break;
4225
+ } // switch
4226
+ return r;
4227
+ }
4228
+ static inline oneapi::mkl::vm::status
4229
+ sub(const double* a, const double* b, double* y,
4230
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4231
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4232
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4233
+ default:
4234
+ case oneapi::mkl::vm::mode::ha:
4235
+ r = detail::sub(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
4236
+ break;
4237
+ case oneapi::mkl::vm::mode::la:
4238
+ r = detail::sub(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
4239
+ break;
4240
+ case oneapi::mkl::vm::mode::ep:
4241
+ r = detail::sub(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
4242
+ break;
4243
+ } // switch
4244
+ return r;
4245
+ }
4246
+ static inline oneapi::mkl::vm::status
4247
+ sub(const std::complex<float>* a, const std::complex<float>* b,
4248
+ std::complex<float>* y,
4249
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4250
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4251
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4252
+ default:
4253
+ case oneapi::mkl::vm::mode::ha:
4254
+ r = detail::sub(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
4255
+ break;
4256
+ case oneapi::mkl::vm::mode::la:
4257
+ r = detail::sub(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
4258
+ break;
4259
+ case oneapi::mkl::vm::mode::ep:
4260
+ r = detail::sub(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
4261
+ break;
4262
+ } // switch
4263
+ return r;
4264
+ }
4265
+ static inline oneapi::mkl::vm::status
4266
+ sub(const std::complex<double>* a, const std::complex<double>* b,
4267
+ std::complex<double>* y,
4268
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4269
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4270
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4271
+ default:
4272
+ case oneapi::mkl::vm::mode::ha:
4273
+ r = detail::sub(a, b, y, oneapi::mkl::vm::device::detail::mode::ha);
4274
+ break;
4275
+ case oneapi::mkl::vm::mode::la:
4276
+ r = detail::sub(a, b, y, oneapi::mkl::vm::device::detail::mode::la);
4277
+ break;
4278
+ case oneapi::mkl::vm::mode::ep:
4279
+ r = detail::sub(a, b, y, oneapi::mkl::vm::device::detail::mode::ep);
4280
+ break;
4281
+ } // switch
4282
+ return r;
4283
+ }
4284
+ static inline oneapi::mkl::vm::status
4285
+ tan(const sycl::half* a, sycl::half* y,
4286
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4287
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4288
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4289
+ default:
4290
+ case oneapi::mkl::vm::mode::ha:
4291
+ r = detail::tan(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4292
+ break;
4293
+ case oneapi::mkl::vm::mode::la:
4294
+ r = detail::tan(a, y, oneapi::mkl::vm::device::detail::mode::la);
4295
+ break;
4296
+ case oneapi::mkl::vm::mode::ep:
4297
+ r = detail::tan(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4298
+ break;
4299
+ } // switch
4300
+ return r;
4301
+ }
4302
+ static inline oneapi::mkl::vm::status
4303
+ tan(const float* a, float* y,
4304
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4305
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4306
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4307
+ default:
4308
+ case oneapi::mkl::vm::mode::ha:
4309
+ r = detail::tan(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4310
+ break;
4311
+ case oneapi::mkl::vm::mode::la:
4312
+ r = detail::tan(a, y, oneapi::mkl::vm::device::detail::mode::la);
4313
+ break;
4314
+ case oneapi::mkl::vm::mode::ep:
4315
+ r = detail::tan(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4316
+ break;
4317
+ } // switch
4318
+ return r;
4319
+ }
4320
+ static inline oneapi::mkl::vm::status
4321
+ tan(const double* a, double* y,
4322
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4323
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4324
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4325
+ default:
4326
+ case oneapi::mkl::vm::mode::ha:
4327
+ r = detail::tan(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4328
+ break;
4329
+ case oneapi::mkl::vm::mode::la:
4330
+ r = detail::tan(a, y, oneapi::mkl::vm::device::detail::mode::la);
4331
+ break;
4332
+ case oneapi::mkl::vm::mode::ep:
4333
+ r = detail::tan(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4334
+ break;
4335
+ } // switch
4336
+ return r;
4337
+ }
4338
+ static inline oneapi::mkl::vm::status
4339
+ tand(const sycl::half* a, sycl::half* y,
4340
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4341
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4342
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4343
+ default:
4344
+ case oneapi::mkl::vm::mode::ha:
4345
+ r = detail::tand(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4346
+ break;
4347
+ case oneapi::mkl::vm::mode::la:
4348
+ r = detail::tand(a, y, oneapi::mkl::vm::device::detail::mode::la);
4349
+ break;
4350
+ case oneapi::mkl::vm::mode::ep:
4351
+ r = detail::tand(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4352
+ break;
4353
+ } // switch
4354
+ return r;
4355
+ }
4356
+ static inline oneapi::mkl::vm::status
4357
+ tand(const float* a, float* y,
4358
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4359
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4360
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4361
+ default:
4362
+ case oneapi::mkl::vm::mode::ha:
4363
+ r = detail::tand(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4364
+ break;
4365
+ case oneapi::mkl::vm::mode::la:
4366
+ r = detail::tand(a, y, oneapi::mkl::vm::device::detail::mode::la);
4367
+ break;
4368
+ case oneapi::mkl::vm::mode::ep:
4369
+ r = detail::tand(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4370
+ break;
4371
+ } // switch
4372
+ return r;
4373
+ }
4374
+ static inline oneapi::mkl::vm::status
4375
+ tand(const double* a, double* y,
4376
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4377
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4378
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4379
+ default:
4380
+ case oneapi::mkl::vm::mode::ha:
4381
+ r = detail::tand(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4382
+ break;
4383
+ case oneapi::mkl::vm::mode::la:
4384
+ r = detail::tand(a, y, oneapi::mkl::vm::device::detail::mode::la);
4385
+ break;
4386
+ case oneapi::mkl::vm::mode::ep:
4387
+ r = detail::tand(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4388
+ break;
4389
+ } // switch
4390
+ return r;
4391
+ }
4392
+ static inline oneapi::mkl::vm::status
4393
+ tanh(const sycl::half* a, sycl::half* y,
4394
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4395
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4396
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4397
+ default:
4398
+ case oneapi::mkl::vm::mode::ha:
4399
+ r = detail::tanh(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4400
+ break;
4401
+ case oneapi::mkl::vm::mode::la:
4402
+ r = detail::tanh(a, y, oneapi::mkl::vm::device::detail::mode::la);
4403
+ break;
4404
+ case oneapi::mkl::vm::mode::ep:
4405
+ r = detail::tanh(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4406
+ break;
4407
+ } // switch
4408
+ return r;
4409
+ }
4410
+ static inline oneapi::mkl::vm::status
4411
+ tanh(const float* a, float* y,
4412
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4413
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4414
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4415
+ default:
4416
+ case oneapi::mkl::vm::mode::ha:
4417
+ r = detail::tanh(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4418
+ break;
4419
+ case oneapi::mkl::vm::mode::la:
4420
+ r = detail::tanh(a, y, oneapi::mkl::vm::device::detail::mode::la);
4421
+ break;
4422
+ case oneapi::mkl::vm::mode::ep:
4423
+ r = detail::tanh(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4424
+ break;
4425
+ } // switch
4426
+ return r;
4427
+ }
4428
+ static inline oneapi::mkl::vm::status
4429
+ tanh(const double* a, double* y,
4430
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4431
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4432
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4433
+ default:
4434
+ case oneapi::mkl::vm::mode::ha:
4435
+ r = detail::tanh(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4436
+ break;
4437
+ case oneapi::mkl::vm::mode::la:
4438
+ r = detail::tanh(a, y, oneapi::mkl::vm::device::detail::mode::la);
4439
+ break;
4440
+ case oneapi::mkl::vm::mode::ep:
4441
+ r = detail::tanh(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4442
+ break;
4443
+ } // switch
4444
+ return r;
4445
+ }
4446
+ static inline oneapi::mkl::vm::status
4447
+ tanpi(const sycl::half* a, sycl::half* y,
4448
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4449
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4450
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4451
+ default:
4452
+ case oneapi::mkl::vm::mode::ha:
4453
+ r = detail::tanpi(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4454
+ break;
4455
+ case oneapi::mkl::vm::mode::la:
4456
+ r = detail::tanpi(a, y, oneapi::mkl::vm::device::detail::mode::la);
4457
+ break;
4458
+ case oneapi::mkl::vm::mode::ep:
4459
+ r = detail::tanpi(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4460
+ break;
4461
+ } // switch
4462
+ return r;
4463
+ }
4464
+ static inline oneapi::mkl::vm::status
4465
+ tanpi(const float* a, float* y,
4466
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4467
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4468
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4469
+ default:
4470
+ case oneapi::mkl::vm::mode::ha:
4471
+ r = detail::tanpi(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4472
+ break;
4473
+ case oneapi::mkl::vm::mode::la:
4474
+ r = detail::tanpi(a, y, oneapi::mkl::vm::device::detail::mode::la);
4475
+ break;
4476
+ case oneapi::mkl::vm::mode::ep:
4477
+ r = detail::tanpi(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4478
+ break;
4479
+ } // switch
4480
+ return r;
4481
+ }
4482
+ static inline oneapi::mkl::vm::status
4483
+ tanpi(const double* a, double* y,
4484
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4485
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4486
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4487
+ default:
4488
+ case oneapi::mkl::vm::mode::ha:
4489
+ r = detail::tanpi(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4490
+ break;
4491
+ case oneapi::mkl::vm::mode::la:
4492
+ r = detail::tanpi(a, y, oneapi::mkl::vm::device::detail::mode::la);
4493
+ break;
4494
+ case oneapi::mkl::vm::mode::ep:
4495
+ r = detail::tanpi(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4496
+ break;
4497
+ } // switch
4498
+ return r;
4499
+ }
4500
+ static inline oneapi::mkl::vm::status
4501
+ tgamma(const sycl::half* a, sycl::half* y,
4502
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4503
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4504
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4505
+ default:
4506
+ case oneapi::mkl::vm::mode::ha:
4507
+ r = detail::tgamma(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4508
+ break;
4509
+ case oneapi::mkl::vm::mode::la:
4510
+ r = detail::tgamma(a, y, oneapi::mkl::vm::device::detail::mode::la);
4511
+ break;
4512
+ case oneapi::mkl::vm::mode::ep:
4513
+ r = detail::tgamma(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4514
+ break;
4515
+ } // switch
4516
+ return r;
4517
+ }
4518
+ static inline oneapi::mkl::vm::status
4519
+ tgamma(const float* a, float* y,
4520
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4521
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4522
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4523
+ default:
4524
+ case oneapi::mkl::vm::mode::ha:
4525
+ r = detail::tgamma(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4526
+ break;
4527
+ case oneapi::mkl::vm::mode::la:
4528
+ r = detail::tgamma(a, y, oneapi::mkl::vm::device::detail::mode::la);
4529
+ break;
4530
+ case oneapi::mkl::vm::mode::ep:
4531
+ r = detail::tgamma(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4532
+ break;
4533
+ } // switch
4534
+ return r;
4535
+ }
4536
+ static inline oneapi::mkl::vm::status
4537
+ tgamma(const double* a, double* y,
4538
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4539
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4540
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4541
+ default:
4542
+ case oneapi::mkl::vm::mode::la:
4543
+ r = detail::tgamma(a, y, oneapi::mkl::vm::device::detail::mode::la);
4544
+ break;
4545
+ case oneapi::mkl::vm::mode::ep:
4546
+ r = detail::tgamma(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4547
+ break;
4548
+ } // switch
4549
+ return r;
4550
+ }
4551
+ static inline oneapi::mkl::vm::status
4552
+ trunc(const sycl::half* a, sycl::half* y,
4553
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4554
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4555
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4556
+ default:
4557
+ case oneapi::mkl::vm::mode::ha:
4558
+ r = detail::trunc(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4559
+ break;
4560
+ case oneapi::mkl::vm::mode::la:
4561
+ r = detail::trunc(a, y, oneapi::mkl::vm::device::detail::mode::la);
4562
+ break;
4563
+ case oneapi::mkl::vm::mode::ep:
4564
+ r = detail::trunc(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4565
+ break;
4566
+ } // switch
4567
+ return r;
4568
+ }
4569
+ static inline oneapi::mkl::vm::status
4570
+ trunc(const float* a, float* y,
4571
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4572
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4573
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4574
+ default:
4575
+ case oneapi::mkl::vm::mode::ha:
4576
+ r = detail::trunc(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4577
+ break;
4578
+ case oneapi::mkl::vm::mode::la:
4579
+ r = detail::trunc(a, y, oneapi::mkl::vm::device::detail::mode::la);
4580
+ break;
4581
+ case oneapi::mkl::vm::mode::ep:
4582
+ r = detail::trunc(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4583
+ break;
4584
+ } // switch
4585
+ return r;
4586
+ }
4587
+ static inline oneapi::mkl::vm::status
4588
+ trunc(const double* a, double* y,
4589
+ oneapi::mkl::vm::mode mode = oneapi::mkl::vm::mode::ha) {
4590
+ oneapi::mkl::vm::status r = oneapi::mkl::vm::status::computation_empty;
4591
+ switch (mode & oneapi::mkl::vm::mode::accuracy_mask) {
4592
+ default:
4593
+ case oneapi::mkl::vm::mode::ha:
4594
+ r = detail::trunc(a, y, oneapi::mkl::vm::device::detail::mode::ha);
4595
+ break;
4596
+ case oneapi::mkl::vm::mode::la:
4597
+ r = detail::trunc(a, y, oneapi::mkl::vm::device::detail::mode::la);
4598
+ break;
4599
+ case oneapi::mkl::vm::mode::ep:
4600
+ r = detail::trunc(a, y, oneapi::mkl::vm::device::detail::mode::ep);
4601
+ break;
4602
+ } // switch
4603
+ return r;
4604
+ }
4605
+
4606
+ } // namespace oneapi::mkl::vm::device::detail::rts
4607
+
4608
+ #endif // #ifndef ONEAPI_MKL_VM_DEVICE_RTS_HPP