From 97692cface1911070a0a8ee94fcedf5d433b7f98 Mon Sep 17 00:00:00 2001 From: Bram Veenboer Date: Thu, 14 Aug 2025 11:02:30 +0200 Subject: [PATCH] Use Type template for helper functions --- python/bindings.cpp | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/python/bindings.cpp b/python/bindings.cpp index 5c57756..1988e98 100644 --- a/python/bindings.cpp +++ b/python/bindings.cpp @@ -6,42 +6,45 @@ namespace py = pybind11; -py::array_t compute_sinf_py( - const Backend &backend, - py::array_t x) { +template +py::array_t +compute_sin(const Backend &backend, + py::array_t x) { ssize_t n = x.shape(0); - auto x_ptr = x.data(); + const T *x_ptr = x.data(); py::array_t s(n); - auto s_ptr = s.mutable_data(); + T *s_ptr = s.mutable_data(); backend.compute_sinf(static_cast(n), x_ptr, s_ptr); return s; } -py::array_t compute_cosf_py( - const Backend &backend, - py::array_t x) { +template +py::array_t +compute_cos(const Backend &backend, + py::array_t x) { ssize_t n = x.shape(0); - auto x_ptr = x.data(); + const T *x_ptr = x.data(); - py::array_t c(n); - auto c_ptr = c.mutable_data(); + py::array_t c(n); + T *c_ptr = c.mutable_data(); backend.compute_cosf(static_cast(n), x_ptr, c_ptr); return c; } -std::tuple, py::array_t> compute_sincosf_py( - const Backend &backend, - py::array_t x) { +template +std::tuple, py::array_t> +compute_sincos(const Backend &backend, + py::array_t x) { ssize_t n = x.shape(0); - auto x_ptr = x.data(); + const T *x_ptr = x.data(); - py::array_t s(n); - py::array_t c(n); + py::array_t s(n); + py::array_t c(n); backend.compute_sincosf(static_cast(n), x_ptr, s.mutable_data(), c.mutable_data()); @@ -53,9 +56,9 @@ template void bind_backend(py::module &m, const char *name) { py::class_>(m, name) .def(py::init<>()) - .def("compute_sinf", &compute_sinf_py) - .def("compute_cosf", &compute_cosf_py) - .def("compute_sincosf", &compute_sincosf_py); + .def("compute_sinf", &compute_sin) + .def("compute_cosf", &compute_cos) + .def("compute_sincosf", &compute_sincos); } PYBIND11_MODULE(pytrigdx, m) {