15 py::print(
"my_func(x:int={}, y:float={:.0f}, z:float={:.0f})"_s.format(
x, y, z));
20 try { py::module_::import(
"numpy"); }
21 catch (...) {
return; }
28 m.def(
"vectorized_func2",
29 [](py::array_t<int>
x, py::array_t<float> y,
float z) {
36 [](std::complex<double> c) {
return c * std::complex<double>(2.f); }
41 m.def(
"selective_func", [](py::array_t<int, py::array::c_style>) {
return "Int branch taken."; });
42 m.def(
"selective_func", [](py::array_t<float, py::array::c_style>) {
return "Float branch taken."; });
43 m.def(
"selective_func", [](py::array_t<std::complex<float>, py::array::c_style>) {
return "Complex float branch taken."; });
50 NonPODClass(
int v) :
value{v} {}
53 py::class_<NonPODClass>(
m,
"NonPODClass")
57 [](
double *a,
double b, py::array_t<double> c,
const int &d,
int &e, NonPODClass f,
const double g) {
58 return *a + b + c.at(0) + d + e + f.value + g;
63 struct VectorizeTestClass {
64 VectorizeTestClass(
int v) :
value{v} {};
65 float method(
int x,
float y) {
return y + (float) (
x +
value); }
68 py::class_<VectorizeTestClass> vtc(
m,
"VectorizeTestClass");
69 vtc .def(py::init<int>())
73 vtc.def(
"method",
py::vectorize(&VectorizeTestClass::method));
77 py::enum_<py::detail::broadcast_trivial>(
m,
"trivial")
78 .value(
"f_trivial", py::detail::broadcast_trivial::f_trivial)
79 .value(
"c_trivial", py::detail::broadcast_trivial::c_trivial)
80 .value(
"non_trivial", py::detail::broadcast_trivial::non_trivial);
81 m.def(
"vectorized_is_trivial", [](
82 py::array_t<int, py::array::forcecast> arg1,
83 py::array_t<float, py::array::forcecast> arg2,
84 py::array_t<double, py::array::forcecast> arg3
87 std::vector<py::ssize_t> shape;
88 std::array<py::buffer_info, 3> buffers {{ arg1.request(), arg2.request(), arg3.request() }};