@@ -127,6 +127,59 @@ void dpnp_ones_like_c(void* result, size_t size)
127127 dpnp_ones_c<_DataType>(result, size);
128128}
129129
130+ template <typename _DataType_input, typename _DataType_output>
131+ void dpnp_vander_c (const void * array1_in, void * result1, const size_t size_in, const size_t N, const int increasing)
132+ {
133+ if ((array1_in == nullptr ) || (result1 == nullptr ))
134+ return ;
135+
136+ if (!size_in || !N)
137+ return ;
138+
139+ const _DataType_input* array_in = reinterpret_cast <const _DataType_input*>(array1_in);
140+ _DataType_output* result = reinterpret_cast <_DataType_output*>(result1);
141+
142+ if (N == 1 )
143+ {
144+ dpnp_ones_c<_DataType_output>(result, size_in);
145+ return ;
146+ }
147+
148+ if (increasing)
149+ {
150+ for (size_t i = 0 ; i < size_in; ++i)
151+ {
152+ result[i * N] = 1 ;
153+ }
154+ for (size_t i = 1 ; i < N; ++i)
155+ {
156+ for (size_t j = 0 ; j < size_in; ++j)
157+ {
158+ result[j * N + i] = result[j * N + i - 1 ] * array_in[j];
159+ }
160+ }
161+ }
162+ else
163+ {
164+ for (size_t i = 0 ; i < size_in; ++i)
165+ {
166+ result[i * N + N - 1 ] = 1 ;
167+ }
168+ for (size_t i = N - 2 ; i > 0 ; --i)
169+ {
170+ for (size_t j = 0 ; j < size_in; ++j)
171+ {
172+ result[j * N + i] = result[j * N + i + 1 ] * array_in[j];
173+ }
174+ }
175+
176+ for (size_t i = 0 ; i < size_in; ++i)
177+ {
178+ result[i * N] = result[i * N + 1 ] * array_in[i];
179+ }
180+ }
181+ }
182+
130183template <typename _DataType>
131184class dpnp_tri_c_kernel ;
132185
@@ -439,6 +492,13 @@ void func_map_init_arraycreation(func_map_t& fmap)
439492 fmap[DPNPFuncName::DPNP_FN_ONES_LIKE][eft_BLN][eft_BLN] = {eft_BLN, (void *)dpnp_ones_like_c<bool >};
440493 fmap[DPNPFuncName::DPNP_FN_ONES_LIKE][eft_C128][eft_C128] = {eft_C128,
441494 (void *)dpnp_ones_like_c<std::complex <double >>};
495+
496+ fmap[DPNPFuncName::DPNP_FN_VANDER][eft_INT][eft_INT] = {eft_LNG, (void *)dpnp_vander_c<int , long >};
497+ fmap[DPNPFuncName::DPNP_FN_VANDER][eft_LNG][eft_LNG] = {eft_LNG, (void *)dpnp_vander_c<long , long >};
498+ fmap[DPNPFuncName::DPNP_FN_VANDER][eft_FLT][eft_FLT] = {eft_DBL, (void *)dpnp_vander_c<float , double >};
499+ fmap[DPNPFuncName::DPNP_FN_VANDER][eft_DBL][eft_DBL] = {eft_DBL, (void *)dpnp_vander_c<double , double >};
500+ fmap[DPNPFuncName::DPNP_FN_VANDER][eft_BLN][eft_BLN] = {eft_LNG, (void *)dpnp_vander_c<bool , long >};
501+ fmap[DPNPFuncName::DPNP_FN_VANDER][eft_C128][eft_C128] = {eft_C128, (void *)dpnp_vander_c<std::complex <double >, std::complex <double >>};
442502
443503 fmap[DPNPFuncName::DPNP_FN_TRI][eft_INT][eft_INT] = {eft_INT, (void *)dpnp_tri_c<int >};
444504 fmap[DPNPFuncName::DPNP_FN_TRI][eft_LNG][eft_LNG] = {eft_LNG, (void *)dpnp_tri_c<long >};
@@ -460,15 +520,15 @@ void func_map_init_arraycreation(func_map_t& fmap)
460520 fmap[DPNPFuncName::DPNP_FN_ZEROS][eft_FLT][eft_FLT] = {eft_FLT, (void *)dpnp_zeros_c<float >};
461521 fmap[DPNPFuncName::DPNP_FN_ZEROS][eft_DBL][eft_DBL] = {eft_DBL, (void *)dpnp_zeros_c<double >};
462522 fmap[DPNPFuncName::DPNP_FN_ZEROS][eft_BLN][eft_BLN] = {eft_BLN, (void *)dpnp_zeros_c<bool >};
463- fmap[DPNPFuncName::DPNP_FN_ZEROS][eft_C128][eft_C128] = {eft_C128, (void *)dpnp_ones_c <std::complex <double >>};
523+ fmap[DPNPFuncName::DPNP_FN_ZEROS][eft_C128][eft_C128] = {eft_C128, (void *)dpnp_zeros_c <std::complex <double >>};
464524
465525 fmap[DPNPFuncName::DPNP_FN_ZEROS_LIKE][eft_INT][eft_INT] = {eft_INT, (void *)dpnp_zeros_like_c<int >};
466526 fmap[DPNPFuncName::DPNP_FN_ZEROS_LIKE][eft_LNG][eft_LNG] = {eft_LNG, (void *)dpnp_zeros_like_c<long >};
467527 fmap[DPNPFuncName::DPNP_FN_ZEROS_LIKE][eft_FLT][eft_FLT] = {eft_FLT, (void *)dpnp_zeros_like_c<float >};
468528 fmap[DPNPFuncName::DPNP_FN_ZEROS_LIKE][eft_DBL][eft_DBL] = {eft_DBL, (void *)dpnp_zeros_like_c<double >};
469529 fmap[DPNPFuncName::DPNP_FN_ZEROS_LIKE][eft_BLN][eft_BLN] = {eft_BLN, (void *)dpnp_zeros_like_c<bool >};
470530 fmap[DPNPFuncName::DPNP_FN_ZEROS_LIKE][eft_C128][eft_C128] = {eft_C128,
471- (void *)dpnp_ones_like_c <std::complex <double >>};
531+ (void *)dpnp_zeros_like_c <std::complex <double >>};
472532
473533 return ;
474534}
0 commit comments