20#include "reaction_methods/SingleReaction.hpp"
25#include <unordered_map>
33 for (
int i = 1; i <= nu_i; i++) {
34 value -= std::log(
static_cast<double>(Ni0 + i));
37 if (Ni0 + nu_i < 0.) {
38 value = -std::numeric_limits<double>::max();
40 for (
int i = 0; i < -nu_i; i++) {
41 value += std::log(
static_cast<double>(Ni0 - i));
51 std::unordered_map<int, int>
const &particle_numbers) {
62 auto const N_i0 = particle_numbers.at(reaction.
product_types[i]);
70 std::unordered_map<int, int>
const &particle_numbers) {
81 auto const N_i0 = particle_numbers.at(reaction.
product_types[0]);
double calculate_factorial_expression(SingleReaction const &reaction, std::unordered_map< int, int > const &particle_numbers)
Calculates the logarithm of whole product of factorial expressions which occur in the reaction ensemb...
double calculate_factorial_expression_cpH(SingleReaction const &reaction, std::unordered_map< int, int > const &particle_numbers)
Calculates the logarithm of factorial expression which occurs in the constant pH method with symmetri...
double ln_factorial_Ni0_divided_by_factorial_Ni0_plus_nu_i(int Ni0, int nu_i)
Calculates the logaritm of factorial expression which occurs in the reaction ensemble acceptance prob...
std::vector< int > reactant_types
std::vector< int > product_types
std::vector< int > product_coefficients
std::vector< int > reactant_coefficients