Program Listing for File bernoulli.hpp

↰ Return to documentation for file (SeQuant/domain/mbpt/bernoulli.hpp)

#ifndef SEQUANT_DOMAIN_MBPT_BERNOULLI_HPP
#define SEQUANT_DOMAIN_MBPT_BERNOULLI_HPP

#include <SeQuant/core/container.hpp>
#include <SeQuant/core/expr.hpp>
#include <SeQuant/core/rational.hpp>

#include <cstddef>
#include <string>

namespace sequant::mbpt::bernoulli {

ExprPtr hbar(std::size_t N, std::size_t rank, bool skip1);

namespace detail {

using PartitionPathCoefficients = container::map<std::string, rational>;

container::svector<PartitionPathCoefficients> nested_commutator_coefficients(
    std::size_t max_order);

ExprPtr wick_reduce(const ExprPtr& expr);

ExprPtr wick_commutator(const ExprPtr& A, const ExprPtr& B);

ExprPtr expand_to_blocks(const ExprPtr& expr);

ExprPtr N_part(const ExprPtr& expr, std::size_t cutoff,
               std::size_t min_rank = 1);

ExprPtr R_part(const ExprPtr& expr, std::size_t cutoff,
               std::size_t min_rank = 1);

}  // namespace detail

}  // namespace sequant::mbpt::bernoulli

#endif  // SEQUANT_DOMAIN_MBPT_BERNOULLI_HPP