@@ -83,6 +83,25 @@ template void dpnp_elemwise_absolute_c<float>(void* array1_in, void* result1, si
8383template void dpnp_elemwise_absolute_c<long >(void * array1_in, void * result1, size_t size);
8484template void dpnp_elemwise_absolute_c<int >(void * array1_in, void * result1, size_t size);
8585
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+
86105template <typename _KernelNameSpecialization1, typename _KernelNameSpecialization2, typename _KernelNameSpecialization3>
87106class dpnp_floor_divide_c_kernel ;
88107
@@ -214,6 +233,23 @@ void func_map_init_mathematical(func_map_t& fmap)
214233 fmap[DPNPFuncName::DPNP_FN_ABSOLUTE][eft_FLT][eft_FLT] = {eft_FLT, (void *)dpnp_elemwise_absolute_c<float >};
215234 fmap[DPNPFuncName::DPNP_FN_ABSOLUTE][eft_DBL][eft_DBL] = {eft_DBL, (void *)dpnp_elemwise_absolute_c<double >};
216235
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+
217253 fmap[DPNPFuncName::DPNP_FN_FLOOR_DIVIDE][eft_INT][eft_INT] = {eft_INT, (void *)dpnp_floor_divide_c<int , int , int >};
218254 fmap[DPNPFuncName::DPNP_FN_FLOOR_DIVIDE][eft_INT][eft_LNG] = {eft_LNG, (void *)dpnp_floor_divide_c<int , long , long >};
219255 fmap[DPNPFuncName::DPNP_FN_FLOOR_DIVIDE][eft_INT][eft_FLT] = {eft_DBL,
0 commit comments