12#include "detray/algebra/common/matrix.hpp"
13#include "detray/algebra/concepts.hpp"
14#include "detray/algebra/generic/generic.hpp"
15#include "detray/definitions/detail/qualifiers.hpp"
17namespace detray::algebra::vc_aos::math {
19using algebra::storage::identity;
20using algebra::storage::set_identity;
21using algebra::storage::set_zero;
22using algebra::storage::transpose;
23using algebra::storage::zero;
26template <std::size_t N, concepts::value value_t,
27 template <
typename, std::
size_t>
class array_t>
28DETRAY_HOST_DEVICE
constexpr value_t determinant(
29 const algebra::storage::matrix<array_t, value_t, N, N> &m)
noexcept {
31 return algebra::generic::math::determinant(m);
35template <std::size_t ROW, std::size_t COL, concepts::value value_t,
36 template <
typename, std::
size_t>
class array_t>
37DETRAY_HOST_DEVICE
constexpr algebra::storage::matrix<array_t, value_t, COL,
40 const algebra::storage::matrix<array_t, value_t, ROW, COL> &m)
noexcept {
42 return algebra::generic::math::inverse(m);
46template <std::size_t ROW, std::size_t COL, concepts::value value_t,
47 template <
typename, std::
size_t>
class array_t>
48DETRAY_HOST_DEVICE
constexpr algebra::storage::matrix<array_t, value_t, COL,
51 const algebra::storage::matrix<array_t, value_t, ROW, COL> &m)
noexcept {
53 return algebra::generic::math::transpose(m);