Commit dffc0a4c authored by Mark Florisson's avatar Mark Florisson

Cast double to float when coercing from object to float

parent b3d32712
...@@ -1661,6 +1661,8 @@ class CFloatType(CNumericType): ...@@ -1661,6 +1661,8 @@ class CFloatType(CNumericType):
def __init__(self, rank, math_h_modifier = ''): def __init__(self, rank, math_h_modifier = ''):
CNumericType.__init__(self, rank, 1) CNumericType.__init__(self, rank, 1)
self.math_h_modifier = math_h_modifier self.math_h_modifier = math_h_modifier
if rank == RANK_FLOAT:
self.from_py_function = "__pyx_PyFloat_AsFloat"
def assignable_from_resolved_type(self, src_type): def assignable_from_resolved_type(self, src_type):
return (src_type.is_numeric and not src_type.is_complex) or src_type is error_type return (src_type.is_numeric and not src_type.is_complex) or src_type is error_type
...@@ -3130,8 +3132,10 @@ rank_to_type_name = ( ...@@ -3130,8 +3132,10 @@ rank_to_type_name = (
"long double", # 7 "long double", # 7
) )
RANK_INT = list(rank_to_type_name).index('int') _rank_to_type_name = list(rank_to_type_name)
RANK_LONG = list(rank_to_type_name).index('long') RANK_INT = _rank_to_type_name.index('int')
RANK_LONG = _rank_to_type_name.index('long')
RANK_FLOAT = _rank_to_type_name.index('float')
UNSIGNED = 0 UNSIGNED = 0
SIGNED = 2 SIGNED = 2
...@@ -3644,7 +3648,7 @@ static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); ...@@ -3644,7 +3648,7 @@ static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*); static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
""" + type_conversion_predeclarations """ + type_conversion_predeclarations
# Note: __Pyx_PyObject_IsTrue is written to minimize branching. # Note: __Pyx_PyObject_IsTrue is written to minimize branching.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment