MUDA
Loading...
Searching...
No Matches
inverse.h
1#pragma once
2#include <muda/ext/eigen/eigen_core_cxx20.h>
3#include <muda/ext/eigen/inverse/gauss_elimination.h>
4#include <muda/ext/eigen/inverse/analytic_inverse.h>
5
6namespace muda::eigen
7{
8template <typename T, int N, typename InverseAlgorithm = muda::eigen::GaussEliminationInverse>
9MUDA_INLINE MUDA_GENERIC Eigen::Matrix<T, N, N> inverse(const Eigen::Matrix<T, N, N>& m)
10{
11 return InverseAlgorithm{}(m);
12}
13
14template <typename T, typename InverseAlgorithm = muda::eigen::AnalyticalInverse>
15MUDA_INLINE MUDA_GENERIC Eigen::Matrix<T, 2, 2> inverse(const Eigen::Matrix<T, 2, 2>& m)
16{
17 return InverseAlgorithm{}(m);
18}
19
20template <typename T, typename InverseAlgorithm = muda::eigen::AnalyticalInverse>
21MUDA_INLINE MUDA_GENERIC Eigen::Matrix<T, 3, 3> inverse(const Eigen::Matrix<T, 3, 3>& m)
22{
23 return InverseAlgorithm{}(m);
24}
25
26template <typename T, typename InverseAlgorithm = muda::eigen::AnalyticalInverse>
27MUDA_INLINE MUDA_GENERIC Eigen::Matrix<T, 4, 4> inverse(const Eigen::Matrix<T, 4, 4>& m)
28{
29 return InverseAlgorithm{}(m);
30}
31} // namespace muda::eigen