Skip to content

Commit 50e7c6a

Browse files
committed
finfo support based on numpy/#29763
1 parent c3dd685 commit 50e7c6a

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

quaddtype/numpy_quaddtype/src/dtype.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,28 @@ quadprec_default_descr(PyArray_DTypeMeta *cls)
176176
return (PyArray_Descr *)temp;
177177
}
178178

179+
static PyObject *
180+
quad_finfo(PyArray_Descr *descr)
181+
{
182+
183+
PyObject *finfo_dict = PyDict_New();
184+
if (!finfo_dict) return NULL;
185+
186+
PyDict_SetItemString(finfo_dict, "precision", PyLong_FromLong(34));
187+
PyDict_SetItemString(finfo_dict, "bits", PyLong_FromLong(128));
188+
189+
PyDict_SetItemString(finfo_dict, "eps", PyLong_FromLong(34));
190+
191+
PyDict_SetItemString(finfo_dict, "max", PyLong_FromLong(34));
192+
193+
PyDict_SetItemString(finfo_dict, "tiny", PyLong_FromLong(34));
194+
195+
PyDict_SetItemString(finfo_dict, "epsneg", PyLong_FromLong(34));
196+
PyDict_SetItemString(finfo_dict, "resolution", PyLong_FromLong(34));
197+
198+
return finfo_dict;
199+
}
200+
179201
static PyType_Slot QuadPrecDType_Slots[] = {
180202
{NPY_DT_ensure_canonical, &ensure_canonical},
181203
{NPY_DT_common_instance, &common_instance},
@@ -185,6 +207,7 @@ static PyType_Slot QuadPrecDType_Slots[] = {
185207
{NPY_DT_getitem, &quadprec_getitem},
186208
{NPY_DT_default_descr, &quadprec_default_descr},
187209
{NPY_DT_PyArray_ArrFuncs_dotfunc, NULL},
210+
{NPY_DT_get_finfo, &quad_finfo},
188211
{0, NULL}};
189212

190213
static PyObject *

quaddtype/numpy_quaddtype/src/scalar.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ QuadPrecision_dealloc(QuadPrecisionObject *self)
239239
}
240240

241241
PyTypeObject QuadPrecision_Type = {
242-
PyVarObject_HEAD_INIT(NULL, 0).tp_name = "numpy_quaddtype.QuadPrecision",
242+
PyVarObject_HEAD_INIT(NULL, 0).tp_name = "numpy_quaddtype.QuadPrecDType",
243243
.tp_basicsize = sizeof(QuadPrecisionObject),
244244
.tp_itemsize = 0,
245245
.tp_new = QuadPrecision_new,
@@ -253,5 +253,6 @@ PyTypeObject QuadPrecision_Type = {
253253
int
254254
init_quadprecision_scalar(void)
255255
{
256+
QuadPrecision_Type.tp_base = &PyFloatingArrType_Type;
256257
return PyType_Ready(&QuadPrecision_Type);
257258
}

0 commit comments

Comments
 (0)