Skip to content

Commit 90e77de

Browse files
committed
update finfo generic
1 parent 50e7c6a commit 90e77de

File tree

2 files changed

+31
-21
lines changed

2 files changed

+31
-21
lines changed

quaddtype/numpy_quaddtype/src/dtype.c

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -177,25 +177,35 @@ quadprec_default_descr(PyArray_DTypeMeta *cls)
177177
}
178178

179179
static PyObject *
180-
quad_finfo(PyArray_Descr *descr)
180+
quad_finfo(PyArray_Descr *descr, NPY_DTYPE_INFO_TYPE info_type)
181181
{
182182

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;
183+
// Handle the different info types
184+
switch (info_type) {
185+
case NPY_DTYPE_INFO_FLOAT:
186+
{
187+
PyObject *finfo_dict = PyDict_New();
188+
if (!finfo_dict) return NULL;
189+
190+
PyDict_SetItemString(finfo_dict, "precision", PyLong_FromLong(34));
191+
PyDict_SetItemString(finfo_dict, "bits", PyLong_FromLong(128));
192+
// more fields
193+
return finfo_dict;
194+
}
195+
case NPY_DTYPE_INFO_INTEGER:
196+
// Not implemented yet, could add iinfo support later
197+
PyErr_SetString(PyExc_NotImplementedError,
198+
"Integer info not implemented for this dtype");
199+
return NULL;
200+
case NPY_DTYPE_INFO_GENERIC:
201+
// Not implemented yet, could add generic info later
202+
PyErr_SetString(PyExc_NotImplementedError,
203+
"Generic info not implemented for this dtype");
204+
return NULL;
205+
default:
206+
PyErr_SetString(PyExc_ValueError, "Unknown dtype info type");
207+
return NULL;
208+
}
199209
}
200210

201211
static PyType_Slot QuadPrecDType_Slots[] = {
@@ -207,7 +217,7 @@ static PyType_Slot QuadPrecDType_Slots[] = {
207217
{NPY_DT_getitem, &quadprec_getitem},
208218
{NPY_DT_default_descr, &quadprec_default_descr},
209219
{NPY_DT_PyArray_ArrFuncs_dotfunc, NULL},
210-
{NPY_DT_get_finfo, &quad_finfo},
220+
{NPY_DT_get_dtype_info, &quad_finfo},
211221
{0, NULL}};
212222

213223
static PyObject *

quaddtype/reinstall.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ if [ -d "build/" ]; then
88
rm -rf subprojects/sleef
99
fi
1010

11-
export CFLAGS="-g -O0"
12-
export CXXFLAGS="-g -O0"
11+
# export CFLAGS="-g -O0"
12+
# export CXXFLAGS="-g -O0"
1313
python -m pip uninstall -y numpy_quaddtype
14-
python -m pip install . -v
14+
python -m pip install . --no-build-isolation -v 2>&1 | tee build_log.txt

0 commit comments

Comments
 (0)