@@ -164,6 +164,8 @@ static PyUFuncGenericFunction frexp_functions[] = {
164164};
165165
166166static void * blank3_data [] = { (void * )NULL , (void * )NULL , (void * )NULL };
167+ static void * blank6_data [] = { (void * )NULL , (void * )NULL , (void * )NULL ,
168+ (void * )NULL , (void * )NULL , (void * )NULL };
167169static char frexp_signatures [] = {
168170#ifdef HAVE_FREXPF
169171 PyArray_FLOAT , PyArray_FLOAT , PyArray_INT ,
@@ -174,22 +176,35 @@ static char frexp_signatures[] = {
174176#endif
175177};
176178
179+ #if NPY_SIZEOF_LONG == NPY_SIZEOF_INT
180+ #define LDEXP_LONG (typ ) typ##_ldexp
181+ #else
182+ #define LDEXP_LONG (typ ) typ##_ldexp_long
183+ #endif
184+
177185static PyUFuncGenericFunction ldexp_functions [] = {
178186#ifdef HAVE_LDEXPF
179187 FLOAT_ldexp ,
<
D966
code> 188+ LDEXP_LONG (FLOAT ),
180189#endif
181- DOUBLE_ldexp
190+ DOUBLE_ldexp ,
191+ LDEXP_LONG (DOUBLE )
182192#ifdef HAVE_LDEXPL
183- ,LONGDOUBLE_ldexp
193+ ,
194+ LONGDOUBLE_ldexp ,
195+ LDEXP_LONG (LONGDOUBLE )
184196#endif
185197};
186198
187199static char ldexp_signatures [] = {
188200#ifdef HAVE_LDEXPF
189201 PyArray_FLOAT , PyArray_INT , PyArray_FLOAT ,
202+ PyArray_FLOAT , PyArray_LONG , PyArray_FLOAT ,
190203#endif
204+ PyArray_DOUBLE , PyArray_INT , PyArray_DOUBLE ,
191205 PyArray_DOUBLE , PyArray_LONG , PyArray_DOUBLE
192206#ifdef HAVE_LDEXPL
207+ ,PyArray_LONGDOUBLE , PyArray_INT , PyArray_LONGDOUBLE
193208 ,PyArray_LONGDOUBLE , PyArray_LONG , PyArray_LONGDOUBLE
194209#endif
195210};
@@ -213,14 +228,14 @@ InitOtherOperators(PyObject *dictionary) {
213228 PyDict_SetItemString (dictionary , "frexp" , f );
214229 Py_DECREF (f );
215230
216- num = 1 ;
231+ num = 2 ;
217232#ifdef HAVE_LDEXPL
218- num += 1 ;
233+ num += 2 ;
219234#endif
220235#ifdef HAVE_LDEXPF
221- num += 1 ;
236+ num += 2 ;
222237#endif
223- f = PyUFunc_FromFuncAndData (ldexp_functions , blank3_data , ldexp_signatures , num ,
238+ f = PyUFunc_FromFuncAndData (ldexp_functions , blank6_data , ldexp_signatures , num ,
224239 2 , 1 , PyUFunc_None , "ldexp" ,
225240 "Compute y = x1 * 2**x2." ,0 );
226241 PyDict_SetItemString (dictionary , "ldexp" , f );
0 commit comments