File tree Expand file tree Collapse file tree 1 file changed +14
-7
lines changed
quaddtype/numpy_quaddtype/src Expand file tree Collapse file tree 1 file changed +14
-7
lines changed Original file line number Diff line number Diff line change @@ -123,14 +123,21 @@ common_dtype(PyArray_DTypeMeta *cls, PyArray_DTypeMeta *other)
123123static PyArray_Descr *
124124quadprec_discover_descriptor_from_pyobject (PyArray_DTypeMeta * NPY_UNUSED (cls ), PyObject * obj )
125125{
126- if (Py_TYPE (obj ) != & QuadPrecision_Type ) {
127- PyErr_SetString (PyExc_TypeError , "Can only store QuadPrecision in a QuadPrecDType array." );
128- return NULL ;
126+ if (Py_TYPE (obj ) == & QuadPrecision_Type ) {
127+ /* QuadPrecision scalar: use its backend */
128+ QuadPrecisionObject * quad_obj = (QuadPrecisionObject * )obj ;
129+ return (PyArray_Descr * )new_quaddtype_instance (quad_obj -> backend );
129130 }
130-
131- QuadPrecisionObject * quad_obj = (QuadPrecisionObject * )obj ;
132-
133- return (PyArray_Descr * )new_quaddtype_instance (quad_obj -> backend );
131+
132+ /* For Python int/float/other numeric types: return default descriptor */
133+ /* The casting machinery will handle conversion to QuadPrecision */
134+ if (PyLong_Check (obj ) || PyFloat_Check (obj )) {
135+ return (PyArray_Descr * )new_quaddtype_instance (BACKEND_SLEEF );
136+ }
137+
138+ /* Unknown type - let NumPy handle it or raise appropriate error */
139+ PyErr_SetString (PyExc_TypeError , "Can only store QuadPrecision, int, or float in a QuadPrecDType array." );
140+ return NULL ;
134141}
135142
136143static int
You can’t perform that action at this time.
0 commit comments