@@ -83,6 +83,25 @@ template void dpnp_elemwise_absolute_c<float>(void* array1_in, void* result1, si
83
83
template void dpnp_elemwise_absolute_c<long >(void * array1_in, void * result1, size_t size);
84
84
template void dpnp_elemwise_absolute_c<int >(void * array1_in, void * result1, size_t size);
85
85
86
+ template <typename _KernelNameSpecialization1, typename _KernelNameSpecialization2, typename _KernelNameSpecialization3>
87
+ class dpnp_cross_c_kernel ;
88
+
89
+ template <typename _DataType_input1, typename _DataType_input2, typename _DataType_output>
90
+ void dpnp_cross_c (void * array1_in, void * array2_in, void * result1, size_t size)
91
+ {
92
+ _DataType_input1* array1 = reinterpret_cast <_DataType_input1*>(array1_in);
93
+ _DataType_input2* array2 = reinterpret_cast <_DataType_input2*>(array2_in);
94
+ _DataType_output* result = reinterpret_cast <_DataType_output*>(result1);
95
+
96
+ result[0 ] = array1[1 ] * array2[2 ] - array1[2 ] * array2[1 ];
97
+
98
+ result[1 ] = array1[2 ] * array2[0 ] - array1[0 ] * array2[2 ];
99
+
100
+ result[2 ] = array1[0 ] * array2[1 ] - array1[1 ] * array2[0 ];
101
+
102
+ return ;
103
+ }
104
+
86
105
template <typename _KernelNameSpecialization1, typename _KernelNameSpecialization2, typename _KernelNameSpecialization3>
87
106
class dpnp_floor_divide_c_kernel ;
88
107
@@ -214,6 +233,23 @@ void func_map_init_mathematical(func_map_t& fmap)
214
233
fmap[DPNPFuncName::DPNP_FN_ABSOLUTE][eft_FLT][eft_FLT] = {eft_FLT, (void *)dpnp_elemwise_absolute_c<float >};
215
234
fmap[DPNPFuncName::DPNP_FN_ABSOLUTE][eft_DBL][eft_DBL] = {eft_DBL, (void *)dpnp_elemwise_absolute_c<double >};
216
235
236
+ fmap[DPNPFuncName::DPNP_FN_CROSS][eft_INT][eft_INT] = {eft_INT, (void *)dpnp_cross_c<int , int , int >};
237
+ fmap[DPNPFuncName::DPNP_FN_CROSS][eft_INT][eft_LNG] = {eft_LNG, (void *)dpnp_cross_c<int , long , long >};
238
+ fmap[DPNPFuncName::DPNP_FN_CROSS][eft_INT][eft_FLT] = {eft_DBL, (void *)dpnp_cross_c<int , float , double >};
239
+ fmap[DPNPFuncName::DPNP_FN_CROSS][eft_INT][eft_DBL] = {eft_DBL, (void *)dpnp_cross_c<int , double , double >};
240
+ fmap[DPNPFuncName::DPNP_FN_CROSS][eft_LNG][eft_INT] = {eft_LNG, (void *)dpnp_cross_c<long , int , long >};
241
+ fmap[DPNPFuncName::DPNP_FN_CROSS][eft_LNG][eft_LNG] = {eft_LNG, (void *)dpnp_cross_c<long , long , long >};
242
+ fmap[DPNPFuncName::DPNP_FN_CROSS][eft_LNG][eft_FLT] = {eft_DBL, (void *)dpnp_cross_c<long , float , double >};
243
+ fmap[DPNPFuncName::DPNP_FN_CROSS][eft_LNG][eft_DBL] = {eft_DBL, (void *)dpnp_cross_c<long , double , double >};
244
+ fmap[DPNPFuncName::DPNP_FN_CROSS][eft_FLT][eft_INT] = {eft_DBL, (void *)dpnp_cross_c<float , int , double >};
245
+ fmap[DPNPFuncName::DPNP_FN_CROSS][eft_FLT][eft_LNG] = {eft_DBL, (void *)dpnp_cross_c<float , long , double >};
246
+ fmap[DPNPFuncName::DPNP_FN_CROSS][eft_FLT][eft_FLT] = {eft_FLT, (void *)dpnp_cross_c<float , float , float >};
247
+ fmap[DPNPFuncName::DPNP_FN_CROSS][eft_FLT][eft_DBL] = {eft_DBL, (void *)dpnp_cross_c<float , double , double >};
248
+ fmap[DPNPFuncName::DPNP_FN_CROSS][eft_DBL][eft_INT] = {eft_DBL, (void *)dpnp_cross_c<double , int , double >};
249
+ fmap[DPNPFuncName::DPNP_FN_CROSS][eft_DBL][eft_LNG] = {eft_DBL, (void *)dpnp_cross_c<double , long , double >};
250
+ fmap[DPNPFuncName::DPNP_FN_CROSS][eft_DBL][eft_FLT] = {eft_DBL, (void *)dpnp_cross_c<double , float , double >};
251
+ fmap[DPNPFuncName::DPNP_FN_CROSS][eft_DBL][eft_DBL] = {eft_DBL, (void *)dpnp_cross_c<double , double , double >};
252
+
217
253
fmap[DPNPFuncName::DPNP_FN_FLOOR_DIVIDE][eft_INT][eft_INT] = {eft_INT, (void *)dpnp_floor_divide_c<int , int , int >};
218
254
fmap[DPNPFuncName::DPNP_FN_FLOOR_DIVIDE][eft_INT][eft_LNG] = {eft_LNG, (void *)dpnp_floor_divide_c<int , long , long >};
219
255
fmap[DPNPFuncName::DPNP_FN_FLOOR_DIVIDE][eft_INT][eft_FLT] = {eft_DBL,
0 commit comments