MCPcopy Create free account
hub / github.com/Oneflow-Inc/oneflow / PyTensorObject_var

Function PyTensorObject_var

oneflow/api/python/framework/tensor_functions.cpp:520–549  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

518}
519
520static PyObject* PyTensorObject_var(PyObject* self, PyObject* args, PyObject* kwargs) {
521 HANDLE_ERRORS
522 PyObject* dim_obj = Py_None;
523 PyObject* unbiased_obj = Py_True;
524 PyObject* keepdim_obj = Py_False;
525 static const char* keywords[4] = {"dim", "unbiased", "keepdim", NULL};
526 if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|OO!O!:var", const_cast<char**>(keywords),
527 &dim_obj, &PyBool_Type, &unbiased_obj, &PyBool_Type,
528 &keepdim_obj)) {
529 return NULL;
530 }
531 bool unbiased = unbiased_obj == Py_True;
532 bool keepdim = keepdim_obj == Py_True;
533 CHECK_OR_THROW(dim_obj == Py_None || PyLong_Check(dim_obj)
534 || functional::PyLongSequenceCheck(dim_obj))
535 << Error::TypeError() << "var(): argument 'dim' must be int32 list, not "
536 << functional::PyStringAsString(PyObject_Str((PyObject*)Py_TYPE(dim_obj)));
537 auto tensor = PyTensor_Unpack(self);
538 if (dim_obj == Py_None) {
539 return PyTensor_New(ASSERT_PTR(functional::Variance(tensor, NullOpt, unbiased, keepdim)));
540 }
541 std::vector<int32_t> dim;
542 if (PyLong_Check(dim_obj)) {
543 dim.emplace_back(static_cast<int32_t>(PyLong_AsLong(dim_obj)));
544 return PyTensor_New(ASSERT_PTR(functional::Variance(tensor, dim, unbiased, keepdim)));
545 }
546 dim = functional::PyUnpackLongSequence<int32_t>(dim_obj);
547 return PyTensor_New(ASSERT_PTR(functional::Variance(tensor, dim, unbiased, keepdim)));
548 END_HANDLE_ERRORS
549}
550
551static PyObject* PyTensorObject_std(PyObject* self, PyObject* args, PyObject* kwargs) {
552 HANDLE_ERRORS

Callers

nothing calls this directly

Calls 5

PyLongSequenceCheckFunction · 0.85
PyStringAsStringFunction · 0.85
PyTensor_NewFunction · 0.85
VarianceClass · 0.85
emplace_backMethod · 0.45

Tested by

no test coverage detected