MCPcopy Create free account
hub / github.com/PaddlePaddle/Paddle / PyObject_ToDouble

Function PyObject_ToDouble

paddle/fluid/pybind/op_function_common.cc:241–261  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

239}
240
241double PyObject_ToDouble(PyObject* obj) {
242 double res = 0.0;
243 if (PyFloat_Check(obj) || PyLong_Check(obj) ||
244 (PyObject_CheckTensor(obj) &&
245 reinterpret_cast<TensorObject*>(obj)->tensor.numel() == 1)) {
246 res = PyFloat_AsDouble(obj);
247 return res;
248 }
249 auto type_name =
250 std::string(reinterpret_cast<PyTypeObject*>(obj->ob_type)->tp_name);
251 if (type_name.find("numpy") != std::string::npos &&
252 type_name.find("numpy.complex") == std::string::npos) {
253 auto num_obj = PyNumber_Float(obj);
254 res = PyFloat_AsDouble(num_obj);
255 Py_DECREF(num_obj);
256 } else {
257 PADDLE_THROW(
258 common::errors::InvalidType("Cannot convert %s to double", type_name));
259 }
260 return res;
261}
262
263bool PyObject_CheckComplexOrToComplex(PyObject** obj) {
264 if (PyComplex_Check(*obj) ||

Callers 9

CastPyArg2AttrFloatFunction · 0.85
CastPyArg2AttrDoubleFunction · 0.85
CastPyArg2VectorOfFloatFunction · 0.85
CastNumpy2ScalarFunction · 0.85
CastPyArg2ScalarArrayFunction · 0.85
CastPyArg2DoubleFunction · 0.85
CastPyArg2FloatsFunction · 0.85
CastPyArg2Float64sFunction · 0.85
CastPyArg2ScalarsFunction · 0.85

Calls 3

PyObject_CheckTensorFunction · 0.85
numelMethod · 0.45
findMethod · 0.45

Tested by

no test coverage detected