21 #ifndef yap_PhaseSpaceUtilities_h
22 #define yap_PhaseSpaceUtilities_h
33 std::vector<std::vector<size_t> >
combinations(
size_t N,
size_t n,
const std::vector<std::vector<size_t> >& C = std::vector<std::vector<size_t> >())
41 std::vector<std::vector<size_t> > CC;
45 for (
size_t i = 0; i <= N - n; ++i)
46 CC.push_back(std::vector<size_t>(1, i));
51 for (
size_t i = c.back() + 1; i <= N - n; ++i) {
53 CC.back().push_back(i);
61 template <
typename T,
size_t N>
62 T
delta(
const SquareMatrix<T, N>& M,
size_t l)
78 for (
const auto& c : C)
92 template <
typename T,
size_t N>
96 for (
size_t i = 1; i < M.size() and i <= 4; ++i)
100 for (
size_t i = 5; i < M.size(); ++i)
101 if (
delta(M, i) != 0)
const T det(SquareMatrix< T, N > M)
Definition: Matrix.h:300
std::vector< std::vector< size_t > > combinations(size_t N, size_t n, const std::vector< std::vector< size_t > > &C=std::vector< std::vector< size_t > >())
Definition: PhaseSpaceUtilities.h:33
bool check_deltas(const SquareMatrix< T, N > &M)
Definition: PhaseSpaceUtilities.h:93
Base class for handling YAP exceptions.
Definition: Exceptions.h:39
const SquareMatrix< T, M > diagonal_minor(const SquareMatrix< T, N > m, std::vector< size_t > indices)
diagonal minor matrix
Definition: Matrix.h:326
T delta(const SquareMatrix< T, N > &M, size_t l)
Definition: PhaseSpaceUtilities.h:62
const T trace(const SquareMatrix< T, N > &M)
trace
Definition: Matrix.h:340
constexpr int pow_negative_one(int exponent)
optimized function for (-1)^n
Definition: MathUtilities.h:44