10#ifndef __OCCUPANCY_SPECTRUM_MEMOIZE_H_INCLUDED__
11#define __OCCUPANCY_SPECTRUM_MEMOIZE_H_INCLUDED__
13#include "ProbabilityDistribution.hpp"
14#include "editor_policy.hpp"
15#include "filter_policy.hpp"
18#include <unordered_map>
24namespace occupancy_spectrum
33 std::size_t operator()(
const std::pair<int, int> ¶m)
const
35 static const auto hacher = std::hash<int>();
36 const std::size_t h1 = hacher(param.first);
37 const std::size_t h2 = hacher(param.second);
38 return h1 ^ (h2 << 1);
52template <
class FilterPolicy = filter_policy::return_always_true,
class EditorPolicy = editor_policy::
identity>
57 const auto pair_k_N = std::make_pair(k, N);
58 const auto it = cache.find(pair_k_N);
59 if (it != cache.end())
63 const auto pair_itNewResult_true =
64 cache.emplace(std::piecewise_construct, std::forward_as_tuple(pair_k_N), std::forward_as_tuple(k, N));
65 return pair_itNewResult_true.first->second;
Occupancy spectrum distributed according to the probability function given by von Mises (1939).
Definition ProbabilityDistribution.hpp:71
const ProbabilityDistribution< FilterPolicy, EditorPolicy > & memoize(int k, int N)
Store on RAM the entire distributions of occupancy spectrums for every pair and .
Definition memoize.hpp:53
Simulation of coalescence-based models of molecular evolution.
Definition coalescence.hpp:21
To store pairs of distribution parameters and in a hashmap.
Definition memoize.hpp:32