| 251 | } |
| 252 | |
| 253 | void AddVectorToPython(pybind11::module& m) |
| 254 | { |
| 255 | typedef boost::numeric::ublas::vector_slice<Vector> VectorSlice; |
| 256 | py::class_< VectorSlice >(m, "VectorSlice") |
| 257 | .def("Size", [](const VectorSlice& self) |
| 258 | { |
| 259 | return self.size(); |
| 260 | } ) |
| 261 | .def("__len__", [](const VectorSlice& self) |
| 262 | { |
| 263 | return self.size(); |
| 264 | } ) |
| 265 | .def("__iadd__", [](VectorSlice& self, const double scalar) |
| 266 | { |
| 267 | for(unsigned int i=0; i<self.size(); ++i) self[i]+=scalar; |
| 268 | return self; |
| 269 | }, py::is_operator()) |
| 270 | .def("__isub__", [](VectorSlice& self, const double scalar) |
| 271 | { |
| 272 | for(unsigned int i=0; i<self.size(); ++i) self[i]-=scalar; |
| 273 | return self; |
| 274 | }, py::is_operator()) |
| 275 | .def("__imul__", [](VectorSlice& self, const double scalar) |
| 276 | { |
| 277 | for(unsigned int i=0; i<self.size(); ++i) self[i]*=scalar; |
| 278 | return self; |
| 279 | }, py::is_operator()) |
| 280 | .def("__itruediv__", [](VectorSlice& self, const double scalar) |
| 281 | { |
| 282 | for(unsigned int i=0; i<self.size(); ++i) self[i]/=scalar; |
| 283 | return self; |
| 284 | }, py::is_operator()) |
| 285 | .def("__iadd__", [](VectorSlice& self, const VectorSlice& other_vec) |
| 286 | { |
| 287 | noalias(self) += other_vec; |
| 288 | return self; |
| 289 | }, py::is_operator()) |
| 290 | .def("__isub__", [](VectorSlice& self, const VectorSlice& other_vec) |
| 291 | { |
| 292 | noalias(self) -= other_vec; |
| 293 | return self; |
| 294 | }, py::is_operator()) |
| 295 | .def("__mul__", [](VectorSlice vec1, const double scalar) |
| 296 | { |
| 297 | for(unsigned int i=0; i<vec1.size(); ++i) vec1[i]*=scalar; |
| 298 | return vec1; |
| 299 | }, py::is_operator()) |
| 300 | .def("__div__", [](VectorSlice vec1, const double scalar) |
| 301 | { |
| 302 | for(unsigned int i=0; i<vec1.size(); ++i) vec1[i]/=scalar; |
| 303 | return vec1; |
| 304 | }, py::is_operator()) |
| 305 | .def("__rmul__", [](VectorSlice vec1, const double scalar) |
| 306 | { |
| 307 | for(unsigned int i=0; i<vec1.size(); ++i) vec1[i]*=scalar; |
| 308 | return vec1; |
| 309 | }, py::is_operator()) |
| 310 | .def("__rdiv__", [](VectorSlice vec1, const double scalar) |
no test coverage detected