Skip to content

Commit 7fd8da6

Browse files
committed
failing: londouble with different dtype
1 parent a652985 commit 7fd8da6

File tree

8 files changed

+420
-139
lines changed

8 files changed

+420
-139
lines changed

quaddtype/numpy_quaddtype/src/dtype.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ new_quaddtype_instance(QuadBackendType backend)
5757
new->base.elsize = (backend == BACKEND_SLEEF) ? sizeof(Sleef_quad) : sizeof(long double);
5858
new->base.alignment = (backend == BACKEND_SLEEF) ? _Alignof(Sleef_quad) : _Alignof(long double);
5959
new->backend = backend;
60-
6160
return new;
6261
}
6362

@@ -73,7 +72,7 @@ common_instance(QuadPrecDTypeObject *dtype1, QuadPrecDTypeObject *dtype2)
7372
{
7473
if (dtype1->backend != dtype2->backend) {
7574
PyErr_SetString(PyExc_TypeError,
76-
"Cannot combine QuadPrecDType instances with different backends");
75+
"Cannot find common instance for QuadPrecDTypes with different backends");
7776
return NULL;
7877
}
7978
Py_INCREF(dtype1);
@@ -189,7 +188,8 @@ QuadPrecDType_new(PyTypeObject *NPY_UNUSED(cls), PyObject *args, PyObject *kwds)
189188
return NULL;
190189
}
191190

192-
return (PyObject *)new_quaddtype_instance(backend);
191+
return (PyObject *)quadprec_discover_descriptor_from_pyobject(
192+
&QuadPrecDType, (PyObject *)QuadPrecision_raw_new(backend));
193193
}
194194

195195
static PyObject *
@@ -217,7 +217,7 @@ init_quadprec_dtype(void)
217217
return -1;
218218

219219
PyArrayDTypeMeta_Spec QuadPrecDType_DTypeSpec = {
220-
.flags = NPY_DT_NUMERIC,
220+
.flags = NPY_DT_PARAMETRIC | NPY_DT_NUMERIC,
221221
.casts = casts,
222222
.typeobj = &QuadPrecision_Type,
223223
.slots = QuadPrecDType_Slots,

quaddtype/numpy_quaddtype/src/dtype.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ typedef struct {
1717

1818
extern PyArray_DTypeMeta QuadPrecDType;
1919

20-
QuadPrecDTypeObject * new_quaddtype_instance(QuadBackendType backend);
20+
QuadPrecDTypeObject *
21+
new_quaddtype_instance(QuadBackendType backend);
2122

22-
int init_quadprec_dtype(void);
23+
int
24+
init_quadprec_dtype(void);
2325

2426
#ifdef __cplusplus
2527
}

quaddtype/numpy_quaddtype/src/ops.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ quad_greaterequal(const Sleef_quad *a, const Sleef_quad *b)
376376
}
377377

378378
// comparison quad functions
379-
typedef npy_bool (*cmp_londouble_def)(const long double *, const double *);
379+
typedef npy_bool (*cmp_londouble_def)(const long double *, const long double *);
380380

381381
static inline npy_bool
382382
ld_equal(const long double *a, const long double *b)

quaddtype/numpy_quaddtype/src/quad_common.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ extern "C" {
66
#endif
77

88
typedef enum {
9+
BACKEND_INVALID = -1,
910
BACKEND_SLEEF,
1011
BACKEND_LONGDOUBLE
1112
} QuadBackendType;

quaddtype/numpy_quaddtype/src/quaddtype_main.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
#include "scalar.h"
1313
#include "dtype.h"
14-
// #include "umath.h"
14+
#include "umath.h"
1515
#include "quad_common.h"
1616

1717
static struct PyModuleDef moduledef = {
@@ -43,9 +43,9 @@ PyInit__quaddtype_main(void)
4343
if (PyModule_AddObject(m, "QuadPrecDType", (PyObject *)&QuadPrecDType) < 0)
4444
goto error;
4545

46-
// if (init_quad_umath() < 0) {
47-
// goto error;
48-
// }
46+
if (init_quad_umath() < 0) {
47+
goto error;
48+
}
4949

5050
return m;
5151

0 commit comments

Comments
 (0)