@@ -164,6 +164,8 @@ static PyUFuncGenericFunction frexp_functions[] = {
164
164
};
165
165
166
166
static 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 };
167
169
static char frexp_signatures [] = {
168
170
#ifdef HAVE_FREXPF
169
171
PyArray_FLOAT , PyArray_FLOAT , PyArray_INT ,
@@ -174,22 +176,35 @@ static char frexp_signatures[] = {
174
176
#endif
175
177
};
176
178
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
+
177
185
static PyUFuncGenericFunction ldexp_functions [] = {
178
186
#ifdef HAVE_LDEXPF
179
187
FLOAT_ldexp ,
188
+ LDEXP_LONG (FLOAT ),
180
189
#endif
181
- DOUBLE_ldexp
190
+ DOUBLE_ldexp ,
191
+ LDEXP_LONG (DOUBLE )
182
192
#ifdef HAVE_LDEXPL
183
- ,LONGDOUBLE_ldexp
193
+ ,
194
+ LONGDOUBLE_ldexp ,
195
+ LDEXP_LONG (LONGDOUBLE )
184
196
#endif
185
197
};
186
198
187
199
static char ldexp_signatures [] = {
188
200
#ifdef HAVE_LDEXPF
189
201
PyArray_FLOAT , PyArray_INT , PyArray_FLOAT ,
202
+ PyArray_FLOAT , PyArray_LONG , PyArray_FLOAT ,
190
203
#endif
204
+ PyArray_DOUBLE , PyArray_INT , PyArray_DOUBLE ,
191
205
PyArray_DOUBLE , PyArray_LONG , PyArray_DOUBLE
192
206
#ifdef HAVE_LDEXPL
207
+ ,PyArray_LONGDOUBLE , PyArray_INT , PyArray_LONGDOUBLE
193
208
,PyArray_LONGDOUBLE , PyArray_LONG , PyArray_LONGDOUBLE
194
209
#endif
195
210
};
@@ -213,14 +228,14 @@ InitOtherOperators(PyObject *dictionary) {
213
228
PyDict_SetItemString (dictionary , "frexp" , f );
214
229
Py_DECREF (f );
215
230
216
- num = 1 ;
231
+ num = 2 ;
217
232
#ifdef HAVE_LDEXPL
218
- num += 1 ;
233
+ num += 2 ;
219
234
#endif
220
235
#ifdef HAVE_LDEXPF
221
- num += 1 ;
236
+ num += 2 ;
222
237
#endif
223
- f = PyUFunc_FromFuncAndData (ldexp_functions , blank3_data , ldexp_signatures , num ,
238
+ f = PyUFunc_FromFuncAndData (ldexp_functions , blank6_data , ldexp_signatures , num ,
224
239
2 , 1 , PyUFunc_None , "ldexp" ,
225
240
BAC0
"Compute y = x1 * 2**x2." ,0 );
226
241
PyDict_SetItemString (dictionary , "ldexp" , f );
0 commit comments