Skip to content

Commit d664a59

Browse files
committed
added backend parameter in default descriptor
1 parent 7fd8da6 commit d664a59

File tree

2 files changed

+64
-56
lines changed

2 files changed

+64
-56
lines changed

quaddtype/numpy_quaddtype/src/dtype.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,9 +154,12 @@ quadprec_getitem(QuadPrecDTypeObject *descr, char *dataptr)
154154
}
155155

156156
static PyArray_Descr *
157-
quadprec_default_descr(PyArray_DTypeMeta *NPY_UNUSED(cls))
157+
quadprec_default_descr(PyArray_DTypeMeta *cls)
158158
{
159-
return (PyArray_Descr *)new_quaddtype_instance(BACKEND_SLEEF);
159+
QuadPrecDTypeObject *temp = (QuadPrecDTypeObject *)cls;
160+
const char *s1 = (temp->backend == BACKEND_SLEEF) ? "SLEEF" : "LONGDOUBLE";
161+
printf("called with backend: %s\n", s1);
162+
return (PyArray_Descr *)new_quaddtype_instance(temp->backend);
160163
}
161164

162165
static PyType_Slot QuadPrecDType_Slots[] = {

quaddtype/numpy_quaddtype/src/umath.cpp

Lines changed: 59 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,60 @@ extern "C" {
2121
#include "umath.h"
2222
#include "ops.hpp"
2323

24+
// helper debugging function
25+
static const char *
26+
get_dtype_name(PyArray_DTypeMeta *dtype)
27+
{
28+
if (dtype == &QuadPrecDType) {
29+
return "QuadPrecDType";
30+
}
31+
else if (dtype == &PyArray_BoolDType) {
32+
return "BoolDType";
33+
}
34+
else if (dtype == &PyArray_ByteDType) {
35+
return "ByteDType";
36+
}
37+
else if (dtype == &PyArray_UByteDType) {
38+
return "UByteDType";
39+
}
40+
else if (dtype == &PyArray_ShortDType) {
41+
return "ShortDType";
42+
}
43+
else if (dtype == &PyArray_UShortDType) {
44+
return "UShortDType";
45+
}
46+
else if (dtype == &PyArray_IntDType) {
47+
return "IntDType";
48+
}
49+
else if (dtype == &PyArray_UIntDType) {
50+
return "UIntDType";
51+
}
52+
else if (dtype == &PyArray_LongDType) {
53+
return "LongDType";
54+
}
55+
else if (dtype == &PyArray_ULongDType) {
56+
return "ULongDType";
57+
}
58+
else if (dtype == &PyArray_LongLongDType) {
59+
return "LongLongDType";
60+
}
61+
else if (dtype == &PyArray_ULongLongDType) {
62+
return "ULongLongDType";
63+
}
64+
else if (dtype == &PyArray_FloatDType) {
65+
return "FloatDType";
66+
}
67+
else if (dtype == &PyArray_DoubleDType) {
68+
return "DoubleDType";
69+
}
70+
else if (dtype == &PyArray_LongDoubleDType) {
71+
return "LongDoubleDType";
72+
}
73+
else {
74+
return "UnknownDType";
75+
}
76+
}
77+
2478
static NPY_CASTING
2579
quad_unary_op_resolve_descriptors(PyObject *self, PyArray_DTypeMeta *const dtypes[],
2680
PyArray_Descr *const given_descrs[], PyArray_Descr *loop_descrs[],
@@ -170,13 +224,18 @@ quad_binary_op_resolve_descriptors(PyObject *self, PyArray_DTypeMeta *const dtyp
170224
PyArray_Descr *const given_descrs[],
171225
PyArray_Descr *loop_descrs[], npy_intp *NPY_UNUSED(view_offset))
172226
{
227+
printf("Descriptor Resolver is calledn\n");
173228
Py_INCREF(given_descrs[0]);
174229
loop_descrs[0] = given_descrs[0];
175230
Py_INCREF(given_descrs[1]);
176231
loop_descrs[1] = given_descrs[1];
177232

178233
QuadPrecDTypeObject *descr_in1 = (QuadPrecDTypeObject *)given_descrs[0];
179234
QuadPrecDTypeObject *descr_in2 = (QuadPrecDTypeObject *)given_descrs[1];
235+
const char *s1 = (descr_in1->backend == BACKEND_SLEEF) ? "SLEEF" : "LONGDOUBLE";
236+
const char *s2 = (descr_in2->backend == BACKEND_SLEEF) ? "SLEEF" : "LONGDOUBLE";
237+
printf("1: %s\n", s1);
238+
printf("2: %s\n", s2);
180239

181240
if (descr_in1->backend != descr_in2->backend) {
182241
PyErr_SetString(PyExc_TypeError,
@@ -241,60 +300,6 @@ quad_generic_binop_strided_loop(PyArrayMethod_Context *context, char *const data
241300
return 0;
242301
}
243302

244-
// helper debugging function
245-
static const char *
246-
get_dtype_name(PyArray_DTypeMeta *dtype)
247-
{
248-
if (dtype == &QuadPrecDType) {
249-
return "QuadPrecDType";
250-
}
251-
else if (dtype == &PyArray_BoolDType) {
252-
return "BoolDType";
253-
}
254-
else if (dtype == &PyArray_ByteDType) {
255-
return "ByteDType";
256-
}
257-
else if (dtype == &PyArray_UByteDType) {
258-
return "UByteDType";
259-
}
260-
else if (dtype == &PyArray_ShortDType) {
261-
return "ShortDType";
262-
}
263-
else if (dtype == &PyArray_UShortDType) {
264-
return "UShortDType";
265-
}
266-
else if (dtype == &PyArray_IntDType) {
267-
return "IntDType";
268-
}
269-
else if (dtype == &PyArray_UIntDType) {
270-
return "UIntDType";
271-
}
272-
else if (dtype == &PyArray_LongDType) {
273-
return "LongDType";
274-
}
275-
else if (dtype == &PyArray_ULongDType) {
276-
return "ULongDType";
277-
}
278-
else if (dtype == &PyArray_LongLongDType) {
279-
return "LongLongDType";
280-
}
281-
else if (dtype == &PyArray_ULongLongDType) {
282-
return "ULongLongDType";
283-
}
284-
else if (dtype == &PyArray_FloatDType) {
285-
return "FloatDType";
286-
}
287-
else if (dtype == &PyArray_DoubleDType) {
288-
return "DoubleDType";
289-
}
290-
else if (dtype == &PyArray_LongDoubleDType) {
291-
return "LongDoubleDType";
292-
}
293-
else {
294-
return "UnknownDType";
295-
}
296-
}
297-
298303
static int
299304
quad_ufunc_promoter(PyUFuncObject *ufunc, PyArray_DTypeMeta *op_dtypes[],
300305
PyArray_DTypeMeta *signature[], PyArray_DTypeMeta *new_op_dtypes[])

0 commit comments

Comments
 (0)